在 Azure Active Directory B2C 自定义策略中定义 JWT 令牌颁发者的技术配置文件
注意
在 Azure Active Directory B2C 中,自定义策略主要用于解决复杂的情况。 在大多数情况下,建议你使用内置用户流。 如果尚未这样做,请从 Active Directory B2C 中的自定义策略入门了解自定义策略新手包。
Azure Active Directory B2C (Azure AD B2C) 在处理每个身份验证流时颁发多种安全令牌。 JWT 令牌颁发者的技术配置文件发出返回给信赖方应用程序的 JWT 令牌。 通常,此技术配置文件是用户旅程中的最后一个业务流程步骤。
协议
“Protocol”元素的“Name”属性必须设置为 OpenIdConnect
。 将 OutputTokenFormat 元素设置为 JWT
。
以下示例演示了 JwtIssuer
的技术配置文件:
<TechnicalProfile Id="JwtIssuer">
<DisplayName>JWT Issuer</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputTokenFormat>JWT</OutputTokenFormat>
<Metadata>
<Item Key="client_id">{service:te}</Item>
<Item Key="issuer_refresh_token_user_identity_claim_type">objectId</Item>
<Item Key="SendTokenResponseBodyWithJsonNumbers">true</Item>
</Metadata>
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
<Key Id="issuer_refresh_token_key" StorageReferenceId="B2C_1A_TokenEncryptionKeyContainer" />
</CryptographicKeys>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-jwt-issuer" />
</TechnicalProfile>
输入、输出和保存声明
InputClaims、OutputClaims 和 PersistClaims 元素为空或不存在。 InutputClaimsTransformations 和 OutputClaimsTransformations 元素也不存在。
Metadata
Attribute | 必须 | 说明 |
---|---|---|
issuer_refresh_token_user_identity_claim_type | 是 | 应在 OAuth2 授权代码和刷新令牌中用作用户标识声明的声明。 默认情况下,除非指定了不同的 SubjectNamingInfo 声明类型,否则应将其设置为 objectId 。 |
SendTokenResponseBodyWithJsonNumbers | 否 | 始终设置为 true 。 对于以字符串而不是 JSON 数字形式指定数字值的旧格式,请将此属性设置为 false 。 依赖于以字符串形式返回此类属性的早期实现的客户端需要此属性。 |
token_lifetime_secs | 否 | 访问令牌生存期。 用于获取受保护资源的访问权限的 OAuth 2.0 持有者令牌的生存期。 默认值为 3,600 秒(1 小时)。 最小值为 300 秒(5 分钟)(含)。 最大值为 86,400 秒(24 小时)(含)。 |
id_token_lifetime_secs | 否 | ID 令牌生存期。 默认值为 3,600 秒(1 小时)。 最小值为 300 秒(5 分钟)(含)。 最大值为 86,400 秒(24 小时)(含)。 |
refresh_token_lifetime_secs | 否 | 刷新令牌生存期。 在应用程序已获取 offline_access 范围的情况下,可以使用某个刷新令牌获取新访问令牌之前所要经过的最长时间段。 默认值为 120,9600 秒(14 天)。 最小值为 86,400 秒(24 小时)(含)。 最大值为 7,776,000 秒(90 天)(含)。 |
rolling_refresh_token_lifetime_secs | 否 | 刷新令牌滑动窗口生存期。 此时间段过后,会强制用户重新进行身份验证,不考虑该应用程序获取的最近刷新令牌的有效期。 如果不想要实施滑动窗口生存期,请将 allow_infinite_rolling_refresh_token 的值设置为 true 。 默认值为 7,776,000 秒(90 天)。 最小值为 86,400 秒(24 小时)(含)。 最大值为 31,536,000 秒(365 天)(含)。 |
allow_infinite_rolling_refresh_token | 否 | 如果设置为 true ,则刷新令牌滑动窗口生存期永不过期。 |
IssuanceClaimPattern | 否 | 控制颁发者 (iss) 声明。 值为下列其中一项:
|
AuthenticationContextReferenceClaimPattern | 否 | 控制 acr 声明值。
Key="AuthenticationContextReferenceClaimPattern" 的 <Item> ,且值为 None 。 在信赖方策略中,添加 <OutputClaims> 项和此元素 <OutputClaim ClaimTypeReferenceId="trustFrameworkPolicy" Required="true" DefaultValue="{policy}" PartnerClaimType="tfp"/> 。 另请确保策略包含声明类型 <ClaimType Id="trustFrameworkPolicy"> <DisplayName>trustFrameworkPolicy</DisplayName> <DataType>string</DataType> </ClaimType> |
RefreshTokenUserJourneyId | 否 | 向 /token 终结点发送刷新访问令牌 POST 请求期间应执行的用户旅程的标识符。 |
加密密钥
属性 | 必须 | 说明 |
---|---|---|
issuer_secret | 是 | 用于对 JWT 令牌进行签名的 X509 证书(RSA 密钥集)。 这是在自定义策略入门中配置的 B2C_1A_TokenSigningKeyContainer 密钥。 |
issuer_refresh_token_key | 是 | 用于加密刷新令牌的 X509 证书(RSA 密钥集)。 在自定义策略入门中已配置 B2C_1A_TokenEncryptionKeyContainer 密钥 |
会话管理
若要在 Azure AD B2C 和信赖方应用程序之间配置 Azure AD B2C 会话,请在 UseTechnicalProfileForSessionManagement
元素的属性中添加对 OAuthSSOSessionProvider SSO 会话的引用。