如何从 id_token_hint 中提取多个值到特定声明中?
How to extract multiple values from id_token_hint into specific claims?
我有一个 id_token_hint,带有来自 https://sts.windows.net/ 的令牌。我愿意根据令牌中存在的角色将其用作可信方。这是一个 JWT 令牌示例:
{
"iss": "https://sts.windows.net/00000000-0000-0000-0000-000000000000/",
"iat": 1610050840,
"nbf": 1610050840,
"exp": 1610054740,
"aio": "E2JgYPi646//0000000000000000000=",
"app_displayname": "my_app_displayname",
"appid": "00000000-0000-0000-0000-000000000000",
"appidacr": "1",
"idp": "https://sts.windows.net/00000000-0000-0000-0000-000000000000/",
"idtyp": "app",
"oid": "00000000-73e4-46ae-b464-000000000000",
"rh": "0.AAAAiKphxJIQoUmmKLTdWWDB80kfo3ST3nNJgG0000000000000.",
"roles": [
"Mail.Send",
"Policy.ReadWrite.TrustFramework"
],
"sub": "00000000-73e4-46ae-b464-000000000000",
"tenant_region_scope": "EU",
"tid": "00000000-0000-0000-0000-000000000000",
"uti": "jDVAsZtcd0ezvvkFN00000",
"ver": "1.0",
"xms_tcdt": 1599800000
}
正如您在这里看到的,我有一个角色字段,其中包含一组角色。我试图将此数组解析为特定声明,如 IsPolicyReadWriteRole 和 IsMailSendRole。但是,我找不到有关入门包的任何示例或如何执行此操作的示例。我不需要这些声明本身,我只是打算将它们用作编排步骤中的前提条件。
您可以使用此处提到的说明和示例从 id_token_hint 中提取声明 - https://docs.microsoft.com/en-us/azure/active-directory-b2c/id-token-hint
然后您可以使用getsingleitemfromstringcollection 声明转换来获取声明值。
https://docs.microsoft.com/en-us/azure/active-directory-b2c/stringcollection-transformations#getsingleitemfromstringcollection
然后您可以使用 claimExist 或 claimEquals 谓词来测试该值。
id_token_hint 验证技术配置文件如下所示
<ClaimsProvider>
<DisplayName>Trustframework Policy Engine TechnicalProfiles</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="TpEngine_IdTokenHint_ExtractClaims">
<DisplayName>Trustframework Policy Engine ID Token Hint Setup Technical Profile</DisplayName>
<Protocol Name="None" />
<Metadata>
<Item Key="METADATA">https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration</Item>
</Metadata>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
我有一个 id_token_hint,带有来自 https://sts.windows.net/ 的令牌。我愿意根据令牌中存在的角色将其用作可信方。这是一个 JWT 令牌示例:
{
"iss": "https://sts.windows.net/00000000-0000-0000-0000-000000000000/",
"iat": 1610050840,
"nbf": 1610050840,
"exp": 1610054740,
"aio": "E2JgYPi646//0000000000000000000=",
"app_displayname": "my_app_displayname",
"appid": "00000000-0000-0000-0000-000000000000",
"appidacr": "1",
"idp": "https://sts.windows.net/00000000-0000-0000-0000-000000000000/",
"idtyp": "app",
"oid": "00000000-73e4-46ae-b464-000000000000",
"rh": "0.AAAAiKphxJIQoUmmKLTdWWDB80kfo3ST3nNJgG0000000000000.",
"roles": [
"Mail.Send",
"Policy.ReadWrite.TrustFramework"
],
"sub": "00000000-73e4-46ae-b464-000000000000",
"tenant_region_scope": "EU",
"tid": "00000000-0000-0000-0000-000000000000",
"uti": "jDVAsZtcd0ezvvkFN00000",
"ver": "1.0",
"xms_tcdt": 1599800000
}
正如您在这里看到的,我有一个角色字段,其中包含一组角色。我试图将此数组解析为特定声明,如 IsPolicyReadWriteRole 和 IsMailSendRole。但是,我找不到有关入门包的任何示例或如何执行此操作的示例。我不需要这些声明本身,我只是打算将它们用作编排步骤中的前提条件。
您可以使用此处提到的说明和示例从 id_token_hint 中提取声明 - https://docs.microsoft.com/en-us/azure/active-directory-b2c/id-token-hint
然后您可以使用getsingleitemfromstringcollection 声明转换来获取声明值。 https://docs.microsoft.com/en-us/azure/active-directory-b2c/stringcollection-transformations#getsingleitemfromstringcollection
然后您可以使用 claimExist 或 claimEquals 谓词来测试该值。
id_token_hint 验证技术配置文件如下所示
<ClaimsProvider>
<DisplayName>Trustframework Policy Engine TechnicalProfiles</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="TpEngine_IdTokenHint_ExtractClaims">
<DisplayName>Trustframework Policy Engine ID Token Hint Setup Technical Profile</DisplayName>
<Protocol Name="None" />
<Metadata>
<Item Key="METADATA">https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration</Item>
</Metadata>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>