如何解决Keycloak:如何通过角色筛选特定OIDC客户端的用户?
我们在一个领域中配置了许多用户和多个OIDC客户端。我们想将另一个应用程序(OIDC客户端)连接到该领域。不幸的是,客户端无法检查是否存在任何属性或角色。
如何将Keycloak配置为使用特定的OIDC客户端进行身份验证,但是如果用户没有特定的角色,则返回失败的身份验证?
解决方法
通常这种类型的选项不起作用,因为授权重定向发生在您知道用户是谁之前,因此在您知道涉及哪个角色之前。
我会做什么
进行授权重定向只能执行以下工作:
- 登录用户并返回用户ID(子声明)以及可能的几个作用域
然后在您的应用程序中管理角色-第二个应用程序应调用执行此操作的Web API:
- 从访问令牌以及其他来源获取声明,然后将其用于标识和授权
如果用户通过身份验证但无权使用特定应用,请通过API调用进行检测,然后在登录后在应用中显示“拒绝访问”页面。
,要实现此目的,您应该实现Keycloak的AuthenticatorFactory和Authenticator接口。查看here了解更多信息。 在authenticate()方法中,您将编写与此类似的内容:
If(client == yourClient){
// Check for roles
}
否则,发生故障时的预期行为。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。