我已通过 OpenID Connect 将 Azure AD 连接到 Keycloak。我想做以下事情:
- 如果用户“Romeo”是 AD 中“Montague”组的成员,则他在 Keycloak 中应该具有“情人”角色
- 我不想导入所有 AD 组和用户,用户会在首次登录时导入
- Keycloak 中定义了“情人”角色
- 这应该适用于领域级别,并且对于不同的客户端也同样适用
我能找到的所有示例都只是解释如何使用 LDAP 执行此操作。
最佳答案
这非常困难,但也是可能的。方法如下:
- 默认情况下,Azure Active Directory 不返回组成员身份。要激活它:
- 转到您的应用注册
- 转至“管理”>“ list ”
- 将“groupMembershipClaims”键的值设置为“All”,以使该行如下所示:
"groupMembershipClaims": "All",
- 保存
- Keycloak 默认情况下不请求
groups
范围。去做这个:- 在 Keycloak 管理 UI 中,转到“配置”>“客户端范围”
- 点击“创建”
- 输入名称:“群组”
- 启用“包含在 token 范围内”
- 启用“在同意屏幕上显示”
- 保存
- 然后,将
groups
范围添加到“默认客户端范围”
- 仍在 Keycloak 中,请转到您的身份提供商
- 创建一个新的映射器
- 映射器类型:“声明角色”
- 声明:“团体”
- 声明值:输入对象 ID,不是您希望用作角色分配触发器的 AD 组的名称
- 角色:选择所需的角色
- 保存
关于keycloak - 使用 OIDC 时将组映射到 Keycloak 中的角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70974442/