背景:我想在 Azure 身份令牌中提供自定义声明。我在租户“BaseTenant”中注册了一个应用程序。我还在另外两个租户中注册了此应用程序:“客户 1”和“客户 2”。
问题:为了在 ID 令牌中提供自定义声明,我需要为每个客户租户创建一个自定义签名密钥。我正在遵循有关如何上传密钥的 Microsoft 教程,但是当我为客户租户调用:https://graph.microsoft.com/v1.0/applications/$appObjId 时,我收到一条错误消息,指出资源丢失。我唯一可以设置密钥的地方是“应用程序注册”下的 BaseTenant 中。
注意:要在多租户场景中的 Azure 身份令牌中提供自定义声明,请在基本租户应用程序中将
设置为 True,并将acceptMappedClaims
设置为 2。requestedAccessTokenVersion
创建了一个 Microsoft Entra ID 应用程序,并在清单中更新了值:
"acceptMappedClaims": true,
"requestedAccessTokenVersion": 2
在客户租户中,应用程序将创建为 企业应用程序/服务主体:
客户租户中的应用程序在应用程序注册边栏选项卡中将不可见。
要获取客户租户中的服务主体,使用以下查询:
GET https://graph.microsoft.com/v1.0/servicePrincipals/ServicePrincipalObjID
生成代币:
GET https://login.microsoftonline.com/organizations/oauth2/v2.0/token
client_id : BaseTenantClientID
grant_type : authorization_code
scope : scope
redirect_uri : RedirectURL
code : Code
client_secret : BaseTenantClientSecret
在 ID 令牌中,显示声明(客户租户):
参考:
azure Active Directory - 多租户 Microsoft Entra 应用程序中的自定义声明 - Stack Overflow 由我