You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

现有Keycloak认证体系切换为Azure Managed Identities需调整哪些部分?

解决方案:迁移至Azure Managed Identities的配置调整与Keycloak兼容性说明

Keycloak是否仍适用?

完全适用。Azure Managed Identities(MSI)可与Keycloak无缝集成,替代传统Client ID/Secret方式实现与Azure AD的身份对接——核心是通过MSI的无密钥身份验证机制,让Keycloak安全向Azure AD请求令牌并验证用户身份。

需要修改的核心部分

1. Keycloak侧配置调整

  • 替换OIDC身份提供商的凭据方式:
    原配置依赖Entra App的Client ID和Secret,现在改为依托Managed Identity:
    • 从Azure门户获取目标Managed Identity的客户端ID(系统分配MSI在VM的「身份」页面查看,用户分配MSI直接查看属性)。
    • 在Keycloak的OIDC身份提供商配置中填入该客户端ID,清空客户端Secret字段。
    • 将令牌请求URL设置为Azure IMDS端点:http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://login.microsoftonline.com/{你的租户ID}/oauth2/token,确保Keycloak容器能访问这个内部元数据端点(Azure VM默认允许容器访问)。
  • 调整令牌验证规则:
    • 更新JWKS URL为Azure AD公钥端点:https://login.microsoftonline.com/{你的租户ID}/discovery/v2.0/keys,确保Keycloak能正确验证Azure AD令牌的签名。
    • 校验令牌aud(受众)属性:MSI获取的令牌受众可能对应Azure AD的OIDC资源,需在Keycloak身份提供商配置中添加允许的受众值,或临时关闭严格受众验证(仅建议测试环境使用)。
  • 权限映射逻辑调整:
    若原权限通过Entra App的角色/组传递,需确认Azure AD是否将这些权限包含在MSI获取的用户令牌中。可在Keycloak的「用户联邦」或「属性映射」里,调整从Azure AD令牌到Keycloak用户属性/角色的映射规则,确保应用所需权限能正确同步。

2. 应用与部署侧调整

  • 移除应用内的Entra App凭据:
    若微服务之前配置了与Entra App相关的Client ID/Secret(比如直接调用Azure AD API),需删除这些配置项,所有身份验证请求统一通过Keycloak处理。
  • 容器与VM的身份配置:
    • 为运行Keycloak的Azure VM启用系统分配的Managed Identity,或关联用户分配的Managed Identity:在Azure门户VM的「身份」页面开启系统分配身份,或添加已创建的用户分配身份。
    • 为该Managed Identity授予Azure AD必要权限:比如添加Microsoft Graph的User.Read、GroupMember.Read.All等权限(根据权限同步需求调整),并完成管理员同意。
  • 令牌解析逻辑(按需调整):
    若应用之前解析的是Entra App令牌中的权限字段,现在改为解析Keycloak颁发的令牌,需确认Keycloak已将Azure AD权限正确映射到自身令牌的roles或自定义字段中;若字段键有变化,需调整应用内的解析代码。

验证流程建议

  1. 启动Keycloak容器,查看日志确认是否能通过IMDS成功获取Azure AD的客户端凭据。
  2. 测试用户登录流程:通过Keycloak跳转至Azure AD登录,验证登录后Keycloak是否能正确获取用户信息与权限。
  3. 调用微服务接口,验证应用是否能从Keycloak令牌中解析到正确权限并完成授权。

内容的提问来源于stack exchange,提问作者Chintan Pathak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:57:33