使用 OIDC 时将组映射到 Keycloak 中的角色
Map groups to roles in Keycloak when using OIDC
我通过 OpenID Connect 将 Azure AD 连接到 Keycloak。我想执行以下操作:
- 如果用户“Romeo”是AD中组“Montague”的成员,他应该在Keycloak中具有“lover”角色
- 我不想导入所有 AD 组和用户,用户是在首次登录时导入的
- 角色“情人”在Keycloak中定义
- 这应该适用于领域级别,并且适用于不同的客户端
我能找到的所有示例仅解释了如何使用 LDAP 执行此操作。
这出奇地困难,但有可能。方法如下:
- Azure Active Directory 默认不 return 组成员身份。要激活它:
- 转到您的应用程序注册
- 转到“管理”>“清单”
- 将“groupMembershipClaims”键的值设置为“All”,使该行看起来像这样:
"groupMembershipClaims": "All",
- 保存
- Keycloak 默认不请求
groups
范围。去做这个:
- 在 Keycloak Admin UI 中,转到配置 > 客户端范围
- 点击“创建”
- 输入名称:“组”
- 启用“包含在令牌范围内”
- 启用“在同意屏幕上显示”
- 保存
- 然后,将
groups
范围添加到“默认客户端范围”
- 仍在 Keycloak 中,转到您的身份提供者
- 创建一个新的映射器
- 映射器类型:“声明角色”
- 声明:“群组”
- 声明值:输入对象 ID,不是您希望用作角色触发器的 AD 组的名称作业
- 角色:select所需的角色
- 保存
我通过 OpenID Connect 将 Azure AD 连接到 Keycloak。我想执行以下操作:
- 如果用户“Romeo”是AD中组“Montague”的成员,他应该在Keycloak中具有“lover”角色
- 我不想导入所有 AD 组和用户,用户是在首次登录时导入的
- 角色“情人”在Keycloak中定义
- 这应该适用于领域级别,并且适用于不同的客户端
我能找到的所有示例仅解释了如何使用 LDAP 执行此操作。
这出奇地困难,但有可能。方法如下:
- Azure Active Directory 默认不 return 组成员身份。要激活它:
- 转到您的应用程序注册
- 转到“管理”>“清单”
- 将“groupMembershipClaims”键的值设置为“All”,使该行看起来像这样:
"groupMembershipClaims": "All",
- 保存
- Keycloak 默认不请求
groups
范围。去做这个:- 在 Keycloak Admin UI 中,转到配置 > 客户端范围
- 点击“创建”
- 输入名称:“组”
- 启用“包含在令牌范围内”
- 启用“在同意屏幕上显示”
- 保存
- 然后,将
groups
范围添加到“默认客户端范围”
- 仍在 Keycloak 中,转到您的身份提供者
- 创建一个新的映射器
- 映射器类型:“声明角色”
- 声明:“群组”
- 声明值:输入对象 ID,不是您希望用作角色触发器的 AD 组的名称作业
- 角色:select所需的角色
- 保存