如何根据请求的范围自定义 KeyCloak 身份验证流程

Posted

技术标签:

【中文标题】如何根据请求的范围自定义 KeyCloak 身份验证流程【英文标题】:How to customize KeyCloak auth flows based on requested scope 【发布时间】:2021-05-24 22:24:32 【问题描述】:

我正在尝试配置 KeyCloak 浏览器流程,以允许请求 scope1 的用户使用用户/密码表单,而请求 scope2 的用户需要使用用户/密码表单和 OTP。我的问题分为两部分:

    我是不是没有正确理解某些东西 - 我很惊讶我必须自己编写代码,而 Keycloak 中还没有它 上述方法是否有效?

我不想以用户为条件,而是以所请求的范围为条件。据我所知,要完成这项工作,我需要实现一个自定义 ConditionalAuthenticator,然后大致像这样配置,用我自己的实现替换 Condition - User Configured

【问题讨论】:

是否有可能使用角色而不是作用域? 遗憾的是,我需要的是根据调用者请求的任何内容更改身份验证流程。调用者有权请求任何可能的范围(他们拥有所有必要的角色) 如果我得到答案,我对这个问题很感兴趣,然后我发表评论 【参考方案1】:

我建议检查此链接:

Github Keycloak 文档keycloak-documentation conditional authentication 可以参考这个例子ConditionalOtpFormAuthenticator.java

我尝试开发你想要的东西,或者我使用 HttpHeader 特殊使用 Cookie 来选择一个或其他流程,也许这个想法可以帮助你。

【讨论】:

以上是关于如何根据请求的范围自定义 KeyCloak 身份验证流程的主要内容,如果未能解决你的问题,请参考以下文章

keycloak 从自定义协议映射器抛出身份验证错误

是否可以在 Keycloak 中使用自定义身份验证逻辑?

Keycloak 自定义用户联合和身份提供者工作顺序

是否可以在Keycloak中使用自定义身份验证逻辑?

Keycloak:在社交身份提供者登录时传递自定义用户属性

钥匙斗篷 |如何添加自定义 keycloak 密码策略?