在 Microsoft Entra(以前称为 Azure Active Directory)中,如何向 openid-configurations 清单声明支持的 json 添加更多声明

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

我知道这里已经有一个类似的问题:如何向 openid-configuration 的 Claims_supported 添加更多声明?但它从未得到解答,我的问题专门针对 Entra (Azure AD),而该问题并非特定于该平台。

现在当我伸手去

https://login.microsoftonline.com/{myAppId}/v2.0/.well-known/openid-configuration

我在 json 中得到以下选项

    "claims_supported": [
        "sub",
        "iss",
        "cloud_instance_name",
        "cloud_instance_host_name",
        "cloud_graph_host_name",
        "msgraph_host",
        "aud",
        "exp",
        "iat",
        "auth_time",
        "acr",
        "nonce",
        "preferred_username",
        "name",
        "tid",
        "ver",
        "at_hash",
        "c_hash",
        "email"
    ],

消费系统只允许我使用来自该节点的用户名声明,并且我们有一个名为employeeId的自定义声明,我们想使用它,但它不在这个列表中并且不可用。

有什么方法可以将自定义声明添加到

claims_supported
选项中吗?

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

您可以使用如下策略将自定义声明分配给应用程序:

Connect-AzureAD

$claimsMappingPolicy = [ordered]@{
"ClaimsMappingPolicy" = [ordered]@{
"Version" = 1
"IncludeBasicClaimSet" = $true
"ClaimsSchema" = @(
[ordered]@{
"Source" = "user"
"ID" = "employeeid"
"JwtClaimType" = "employeeid"
}
)
}
}

$appID = "AppID" 
$policyName = "Add employeeid to JWT claims"

$sp = Get-AzureADServicePrincipal -Filter "servicePrincipalNames/any(n: n eq '$appID')"

$existingPolicies = Get-AzureADServicePrincipalPolicy -Id $sp.ObjectId `
| Where-Object { $_.Type -eq "ClaimsMappingPolicy" }
if ($existingPolicies) {
$existingPolicies | Remove-AzureADPolicy
}

$policyDefinition = $claimsMappingPolicy | ConvertTo-Json -Depth 99 -Compress
$policy = New-AzureADPolicy -Type "ClaimsMappingPolicy" -DisplayName $policyName -Definition $policyDefinition

Add-AzureADServicePrincipalPolicy -Id $sp.ObjectId -RefObjectId $policy.Id

enter image description here

创建了 Microsoft Entra ID 应用程序并授予 API 权限:

enter image description here

通过设置以下值更新清单

"acceptMappedClaims": true
AND
"requestedAccessTokenVersion": 2

生成的访问令牌:

GET 
 https://login.microsoftonline.com/TenantId/oauth2/v2.0/token

grant_type: authorization_code 
client_id : ClientId
client_secret : Secret
scope : api://ClientID/claims.read
code : code
redirect_uri : RedirectUrl

enter image description here

显示自定义声明:

enter image description here

您可以将自定义声明分配给应用程序并根据您的要求使用该声明。

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