在 Azure Active Directory B2C 自定义策略中定义 JWT 令牌颁发者的技术配置文件
Azure Active Directory B2C (Azure AD B2C) 在处理每个身份验证流时颁发多种安全令牌。 JWT 令牌颁发者的技术配置文件发出返回给信赖方应用程序的 JWT 令牌。 通常,此技术配置文件是用户旅程中的最后一个业务流程步骤。
协议
“Protocol”元素的“Name”属性必须设置为 。 将 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 元素为空或不存在。
InputClaimsTransformations 和 OutputClaimsTransformations 元素也不存在。
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.microsoftonline 或 tenant-name.b2clogin.cn )和租户标识符 https://login.partner.microsoftonline.cn/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/ - AuthorityWithTfp - iss 声明包含域名(例如
login.microsoftonline 或 tenant-name.b2clogin.cn )、租户标识符和信赖方策略名称。 https://login.partner.microsoftonline.cn/tfp/aaaabbbb-0000-cccc-1111-dddd2222eeee/b2c_1a_tp_sign-up-or-sign-in/v2.0/ 默认值:AuthorityAndTenantGuid |
AuthenticationContextReferenceClaimPattern |
否 |
控制 acr 声明值。- None - Azure AD B2C 不发出 acr 声明
- PolicyId -
acr 声明包含策略名称 用于设置此值的选项为 TFP(信任框架策略)和 ACR(身份验证上下文引用)。 建议将此值设置为 TFP,若要设置值,请确保存在包含 <Item> 的 Key="AuthenticationContextReferenceClaimPattern" ,且值为 None 。 在信赖方策略中,添加 <OutputClaims> 项和此元素 <OutputClaim ClaimTypeReferenceId="trustFrameworkPolicy" Required="true" DefaultValue="{policy}" PartnerClaimType="tfp"/> 。 另请确保策略包含声明类型 <ClaimType Id="trustFrameworkPolicy"> <DisplayName>trustFrameworkPolicy</DisplayName> <DataType>string</DataType> </ClaimType> |
RefreshTokenUserJourneyId |
否 |
向 终结点发送/token POST 请求期间应执行的用户旅程的标识符。 |
加密密钥
元素包含以下属性:
Attribute |
必须 |
说明 |
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 会话的引用。