如何添加本地用户属性作为令牌中的声明?

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

我已在 Microsoft Entra ID 中注册了一个应用程序。我已经能够根据应用程序的配置生成 jwt 令牌(client_id、tenant_id ...)

我想在生成的 jwt 访问令牌中添加用户的属性 onpremisessamaccountname 不要担心这里的事实,该值是空的,我有另一个租户,在其上同步和填充本地数据。

从应用程序的令牌配置页面,onpremisessamaccountname 不会显示在可选声明列表中。

我的问题是如何将此属性添加为生成的令牌中的声明?

azure azure-active-directory access-token microsoft-entra-id
1个回答
0
投票

要将本地用户属性添加为令牌中的声明,您需要将

onPremisesSamAccountname
添加到声明中,并通过创建策略在访问令牌中发送它。

创建一个新的 Microsoft Entra 应用程序并创建策略,如下所示:

Connect-AzureAD
 
$Definition = [ordered]@{
    "ClaimsMappingPolicy" = [ordered]@{
        "Version" = 1
        "IncludeBasicClaimSet" = $true
        "ClaimsSchema" = @(
            [ordered]@{
                "Source" = "user"
                "ID" = "onpremisessamaccountname"
                "JwtClaimType" = "onpremisessamaccountname"
            }
        )
    }
}
$pol =  New-AzureADPolicy -Definition ($definition | ConvertTo-Json -Depth 3) -DisplayName ("Policy_" + ([System.Guid]::NewGuid().guid) + "_" + $template.Values.claimsschema.JwtClaimType) -Type "ClaimsMappingPolicy"
  
$entApp =  New-AzureADApplication -DisplayName  ("RukClaimsDemoApp_" + $template.Values.claimsschema.JwtClaimType)
$spnob =  New-AzureADServicePrincipal -DisplayName $entApp.DisplayName -AppId $entApp.AppId 
Add-AzureADServicePrincipalPolicy -Id $spnob.ObjectId -RefObjectId $pol.Id 

enter image description here

检查策略是否已创建:

Get-AzureADServicePrincipalPolicy -Id SPNObjectID

enter image description here

在清单中,将

acceptMappedClaims
更新为 true:

enter image description here

Expose an API 中的范围将自动添加:

enter image description here

授予 API 权限,如下所示:

enter image description here

对于 sample,通过 Postman 使用交互流生成令牌:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/authorize?
&client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=ClientID/.default openid
&state=12345

enter image description here

当您解码令牌时,将显示声明

onpremisessamaccountname

  • 安装
    AzureADPreview
    模块不会造成任何问题,您可以安装该模块。
  • 否则,请参考此 MsDoc 创建声明映射策略。

参考资料:

使用声明映射策略将 sAMAccountName 添加到 Azure AD 访问令牌 (JWT)(并避免 AADTS50146) – SecureCloudBlog

https://learn.microsoft.com/en-us/answers/questi/azure-ad-custom-attribute作者:Sandeep G-MSFT

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