Key斗篷:如何按角色筛选特定OIDC客户端的用户



我们有一个领域,配置了多个用户和多个OIDC客户端。我们希望将另一个应用程序(OIDC客户端(连接到领域。不幸的是,客户端无法检查是否存在任何属性或角色。

如果用户没有特定的角色,我如何配置Key斗篷以使用特定的OIDC客户端进行身份验证,但返回失败的身份验证?

通常情况下,这种类型的选项不起作用,因为授权重定向在您知道用户是谁之前发生,因此在您知道涉及哪些角色之前发生。

我会怎么做

使授权重定向仅执行以下作业:

  • 登录用户并返回用户id(子声明(,以及可能的几个作用域

然后管理应用程序中的角色-第二个应用程序应该调用Web API来执行此操作:

  • 从访问令牌以及其他来源获取声明,然后使用它们进行标识和授权

如果用户进行了身份验证,但无权使用特定的应用程序,请通过API调用检测此情况,然后在登录后在应用程序中显示"拒绝访问"页面。

要达到这一点,您应该实现Keycloft的AuthenticatorFactory和Authenticator接口。点击此处查看更多信息。在authenticate((方法中,您将编写类似的内容:

If(client == yourClient){
// Check for roles
}

否则,故障时的预期行为。

最新更新