我们在一个领域中配置了许多用户和多个OIDC客户端。我们想将另一个应用程序(OIDC客户端)连接到该领域。不幸的是,客户端无法检查是否存在任何属性或角色。
如何将Keycloak配置为使用特定的OIDC客户端进行身份验证,但是如果用户没有特定的角色,则返回失败的身份验证?
答案 0 :(得分:1)
通常这种类型的选项不起作用,因为授权重定向发生在您知道用户是谁之前,因此在您知道涉及哪个角色之前。
我会做什么
进行授权重定向只能执行以下工作:
然后在您的应用程序中管理角色-第二个应用程序应调用执行此操作的Web API:
如果用户通过身份验证但无权使用特定应用,请通过API调用进行检测,然后在登录后在应用中显示“拒绝访问”页面。
答案 1 :(得分:0)
要实现此目的,您应该实现Keycloak的AuthenticatorFactory和Authenticator接口。查看here了解更多信息。 在authenticate()方法中,您将编写与此类似的内容:
If(client == yourClient){
// Check for roles
}
否则,发生故障时的预期行为。