多租户 Microsoft Entra 应用程序中的自定义声明

问题描述 投票:0回答:1

我有一个“多租户和个人”Entra 应用程序,应该允许拥有各种 Microsoft 帐户的用户登录它。

我需要向此应用程序返回的 ID 令牌添加一些自定义声明(特别是

user.jobtitle
user.officelocation
声明)。我通过在 Microsoft Entra 管理中心为相关应用程序添加“附加声明”来完成此操作,详情请参阅此处。配置看起来像这样:

enter image description here

由于这是一个多租户应用程序,我必须按照此处的详细信息配置自定义签名密钥。我已经使用 Microsoft 提供的 Powershell 脚本完成了此操作。

完成这些配置后,我现在可以获得 OIDC ID 令牌。但是,有一个很大的限制。

ID 令牌仅包含应用程序所在同一租户中的用户的新自定义声明。即,如果应用程序位于租户

aaaa-....-aaaa
中,并且我使用租户
aaaa-...-aaaa
中的 Microsoft 帐户(具有职位名称和办公室位置属性值)进行身份验证,则这些值将作为声明包含在 ID 令牌中。但是,如果我使用租户
bbbb-...-bbbb
的 Microsoft 帐户(也填充了这些相同的属性)进行身份验证,则不包含这些声明。

我不明白为什么;它是一个多租户应用程序,自定义声明是在应用程序本身上配置的,而不是在 Entra 用户目录或特定于我的租户的其他内容上配置的。

如何从所有租户(而不仅仅是我自己的租户)获取用户的这些自定义声明?

azure-active-directory openid-connect microsoft-entra-id
1个回答
0
投票

对于示例,我创建了一个多租户应用程序并添加了自定义声明,如下所示:

enter image description here

我通过邮差生成了代币

Grant type: Authorization code 

Callback URL: https://oauth.pstmn.io/v1/callback
Auth URL:  https://login.microsoftonline.com/common/oauth2/v2.0/authorize
Token URL : https://login.microsoftonline.com/common/oauth2/v2.0/token
Client ID : ClientID
Client Secret : ClientSecret
Scope: api://ClientID/.default openid

enter image description here

我使用 home 租户用户登录,该用户存在于应用程序所在的租户中,并且我成功收到了索赔

ID令牌:

enter image description here

现在,当我尝试使用 其他租户用户登录时,不会显示声明:

ID令牌:

enter image description here

注意:默认情况下,自定义声明是特定于租户的。如果声明是在

TenantA
中创建的,那么只有居住在
TenantA
中的用户才会获得令牌中的声明。

  • 每个租户都有自己的一组声明和属性映射,因此在一个租户中配置的声明可能在另一个租户中不可用。

要解决此问题,您需要在其他租户中创建的企业应用程序或服务主体中添加声明,如下所示:

enter image description here

现在 自定义声明也已成功显示给另一个租户用户

enter image description here

声明也显示在访问令牌中。

参考:

在多租户 Azure AD 应用程序中配置的自定义 SAML 声明不会复制到另一个租户中的此应用程序 - 堆栈内存溢出

© www.soinside.com 2019 - 2024. All rights reserved.