【发布时间】:2022-01-04 16:48:59
【问题描述】:
我正在寻找一种方法来确保 unique_name 声明值始终是通过 SSO 访问的 AAD 中特定应用的用户电子邮件。我注意到对于拥有 AAD 帐户的用户,unique_name 声明值是电子邮件地址,但对于外部用户(被邀请到目录),它以“live.com#”为前缀(例如 live.com#email@域.com)。该应用程序使用 OIDC 协议。我一直在尝试与 Microsoft 文档不同的东西:
- 为 unique_name 声明设置不同的来源 https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-saml-claims-customization (我不确定这是否适用,因为该应用使用的是 OIDC,而不是 SAML)
(顺便说一句,该文档有点过时了,因为我发现“用户属性和声明”部分现在位于 SSO https://docs.microsoft.com/en-us/answers/questions/248748/cant39-find-the-34user-attributes-amp-claims34-sec.html)
- 构建声明映射策略 https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-claims-mapping
这些都不起作用。
我知道这在具有自定义策略的 AAD B2C 中是微不足道的。是否可以用 AAD 中的电子邮件声明覆盖 unique_name 声明?
2022 年 7 月 1 日更新
经过进一步调查,我发现 unique_name 声明仅在 v1 令牌https://docs.microsoft.com/en-us/azure/active-directory/develop/id-tokens、https://github.com/MicrosoftDocs/azure-docs/issues/62971(当前版本为 v2)中支持,并且它已转换为“http://schemas.xmlsoap.org/ws/2005 /05/identity/claims/name”由 ADAL 客户端提供。我所追求的这种定制是针对在 v1 AAD 端点上使用 ADAL 的旧版 .NET 应用程序。 我能想到如何实现这一目标的唯一方法是通过索赔映射政策,但是我无法让它发挥作用。任何想法将不胜感激。
【问题讨论】:
标签: azure-active-directory openid-connect claims-based-identity