在 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>

输入、输出和保存声明

InputClaimsOutputClaimsPersistClaims 元素为空或不存在。 InutputClaimsTransformationsOutputClaimsTransformations 元素也不存在。

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) 声明。 值为下列其中一项:
  • AuthorityAndTenantGuid - iss 声明包含域名(例如 login.microsoftonlinetenant-name.b2clogin.cn)和租户标识符 https://login.partner.microsoftonline.cn/00000000-0000-0000-0000-000000000000/v2.0/
  • AuthorityWithTfp - iss 声明包含域名(例如 login.microsoftonlinetenant-name.b2clogin.cn)、租户标识符和信赖方策略名称。 https://login.partner.microsoftonline.cn/tfp/00000000-0000-0000-0000-000000000000/b2c_1a_tp_sign-up-or-sign-in/v2.0/
默认值:AuthorityAndTenantGuid
AuthenticationContextReferenceClaimPattern 控制 acr 声明值。
  • None - Azure AD B2C 不发出 acr 声明
  • PolicyId - acr 声明包含策略名称
用于设置此值的选项为 TFP(信任框架策略)和 ACR(身份验证上下文引用)。 建议将此值设置为 TFP,若要设置值,请确保存在包含 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 会话的引用。