在 Azure Active Directory B2C 自定义策略中定义 OpenID Connect 技术配置文件

重要

自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息

备注

在 Azure Active Directory B2C 中,自定义策略 主要用于解决复杂场景。 对于大多数场景,我们建议您使用内置的用户流。 如果未这样做,请通过 Active Directory B2C 中的自定义策略入门来了解自定义策略初学者包。

Azure Active Directory B2C(Azure AD B2C)为 OpenID Connect 协议标识提供者提供支持。 OpenID Connect 1.0 定义 OAuth 2.0 之上的标识层,并表示新式身份验证协议中的最先进的状态。 使用 OpenID Connect 技术配置文件,可以与基于 OpenID Connect 的标识提供者(如 Microsoft Entra ID)联合。 与标识提供者联合允许用户使用其现有的社交或企业标识登录。

协议

“Protocol”元素的“Name”属性必须设置为

输入声明

InputClaimsInputClaimsTransformations 元素不是必需的。 但你可能想要将其他参数发送到标识提供者。 以下示例将值为 contoso.com 查询字符串参数添加到授权请求。

<InputClaims>
  <InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>

输出声明

OutputClaims 元素包含 OpenID Connect 标识提供者返回的声明列表。 可能需要将策略中定义的声明名称映射到标识提供者中定义的名称。 还可以包含标识提供者未返回的声明,前提是设置了 DefaultValue 属性。

OutputClaimsTransformations 元素可能包含用于修改输出声明或生成新输出声明的 OutputClaimsTransformation 元素集合。

技术配置文件还会返回标识提供者不返回的声明:

  • 包含标识提供者名称的 identityProvider 声明。
  • authenticationSource 声明的默认值为 socialIdpAuthentication
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="live.com" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
  <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
  <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
  <OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>

元数据

特征 必选 DESCRIPTION
客户编号 是的 身份验证提供者的应用程序标识符。
IdTokenAudience id_token 的受众。 如果指定,Azure AD B2C 会检查标识提供者返回的令牌中的 aud 声明是否等于 IdTokenAudience 元数据中指定的声明。
元数据 是的 指向 OpenID Connect 标识提供者配置文档的 URL,也称为 OpenID 已知配置终结点。 URL 可以包含 {tenant} 表达式,该表达式将替换为租户名称。
authorization_endpoint 指向 OpenID Connect 标识提供者配置授权终结点的 URL。 authorization_endpoint元数据的值优先于 OpenID 已知配置终结点中指定的 authorization_endpoint。 URL 可以包含 {tenant} 表达式,该表达式将替换为租户名称。
end_session_endpoint 结束会话终结点的 URL。 end_session_endpoint 元数据的值优先于 OpenID 已知配置终结点中指定的 end_session_endpoint
发行人 OpenID Connect 标识提供者的唯一标识符。 颁发者元数据的值优先于 OpenID 已知配置终结点中指定的 issuer。 如果指定,Azure AD B2C 会检查标识提供者返回的令牌中的 iss 声明是否等于颁发者元数据中指定的声明。
供应商名称 标识提供者的名称。
response_types 根据 OpenID Connect Core 1.0 规范的响应类型。 可能的值:id_tokencodetoken
响应模式 标识提供者在将结果发送回 Azure AD B2C 时使用的方法。 可能的值:queryform_post(默认值)或 fragment
范围 根据 OpenID Connect Core 1.0 规范定义的请求的范围。 例如 openidprofileemail
HttpBinding 的 与访问令牌和声明令牌终结点的预期 HTTP 绑定。 可能的值:GETPOST
ValidTokenIssuer前缀 使用多租户标识提供者(如 Microsoft Entra ID)时,可用于登录到每个租户的密钥。
UsePolicyInRedirectUri 指示在构造重定向 URI 时是否要使用策略。 在标识提供者中配置应用程序时,需指定重定向 URI。 重定向 URI 指向 Azure AD B2C https://{your-tenant-name}.b2clogin.cn/{your-tenant-name}.partner.onmschina.cn/oauth2/authresp。 如果指定 true,需为每个使用的策略添加重定向 URI。 例如: https://{your-tenant-name}.b2clogin.cn/{your-tenant-name}.partner.onmschina.cn/{policy-name}/oauth2/authresp
MarkAsFailureOnStatusCode5xx 指示如果 HTTP 状态代码在 5xx 范围内,是否应将对外部服务的请求标记为失败。 默认值为 false
发现 MetadataByTokenIssuer 指示是否应使用 JWT 中的颁发者发现 OIDC 元数据。如果需要基于颁发者生成元数据终结点 URL,请将此 URL 设置为 true
IncludeClaimResolvingInClaimsHandling 对于输入和输出声明,指定声明解析是否包含在技术配置文件中。 可能的值:truefalse(默认值)。 若要使用技术配置文件中的声明解析程序,请将此项设为 true
token_endpoint_auth_method 指定 Azure AD B2C 如何向令牌终结点发送身份验证标头。 可能的值:client_secret_post(默认值)和 client_secret_basicprivate_key_jwt。 有关详细信息,请参阅 OpenID Connect 客户端身份验证部分
token_signing_algorithm 指定 token_endpoint_auth_method 设置为 private_key_jwt 时要使用的签名算法。 可能的值:RS256(默认值)或 RS512
SingleLogout已启用 指示在登录过程中技术配置文件是否尝试从联合标识提供者注销。 有关详细信息,请参阅 Azure AD B2C 会话注销。可能的值:true(默认)或 false
ReadBodyClaimsOnIdp重定向 设置为 true 从标识提供者重定向上的响应正文读取声明。 此元数据与 Apple ID 一起使用,其中声明在响应有效负载中返回。
<Metadata>
  <Item Key="ProviderName">https://login.live.com</Item>
  <Item Key="METADATA">https://login.live.com/.well-known/openid-configuration</Item>
  <Item Key="response_types">code</Item>
  <Item Key="response_mode">form_post</Item>
  <Item Key="scope">openid profile email</Item>
  <Item Key="HttpBinding">POST</Item>
  <Item Key="UsePolicyInRedirectUri">false</Item>
  <Item Key="client_id">Your Microsoft application client ID</Item>
</Metadata>

UI 元素

以下设置可用于配置失败时显示的错误消息。 应在 OpenID Connect 技术配置文件中配置元数据。 可以将错误消息本地化

特征 必选 DESCRIPTION
UserMessageIfClaimsPrincipalDoesNotExist 如果目录中未找到具有提供的用户名的帐户,则向用户显示的消息。
UserMessageIfInvalidPassword 如果密码不正确,则向用户显示的消息。
UserMessageIfOldPasswordUsed 如果使用旧密码,则向用户显示的消息。

加密密钥

CryptographicKeys 元素包含以下属性:

特征 必选 DESCRIPTION
客户端密钥 是的 标识提供者应用程序的客户端机密。 仅当 response_types 元数据设置为 codetoken_endpoint_auth_method 设置为 client_secret_postclient_secret_basic时,才需要此加密密钥。 在这种情况下,Azure AD B2C 会再次进行调用,以便用授权代码来交换访问令牌。 如果元数据设置为 id_token 可以省略加密密钥。
assertion_signing_key 是的 用于对客户端断言进行签名的 RSA 私钥。 仅当 token_endpoint_auth_method 元数据设置为 private_key_jwt时,才需要此加密密钥。

重定向 URI

配置标识提供者的重定向 URI 时,请输入 https://{your-tenant-name}.b2clogin.cn/{your-tenant-name}.partner.onmschina.cn/oauth2/authresp。 请确保将 {your-tenant-name} 替换为租户的名称。 重定向 URI 需要采用全小写形式。

例子: