你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
在您开始之前
Azure Active Directory B2C(Azure AD B2C)有两种方法来定义用户与应用程序的交互:预定义的用户流或可配置的自定义策略。 请参阅用户 流和自定义策略概述
将 Azure AD B2C 与 IDEMIA 移动 ID 集成
IDEMIA 提供人脸 ID 和指纹等生物识别身份验证服务,从而减少欺诈和凭据重用。 借助移动 ID,公民可以从受信任的政府颁发的数字 ID 中受益,作为其物理 ID 的补充。 移动 ID 使用自选 PIN、触摸 ID 或人脸 ID 来验证标识。 公民通过共享事务所需的信息来控制其身份。 许多州机动车部门(DMV)都使用移动 ID。
若要了解详细信息,请转到 idemia.com: IDEMIA
方案说明
移动 ID 集成包括以下组件:
-
Azure AD B2C – 验证用户凭据的授权服务器
- 它也称为标识提供者 (IdP)
- IDEMIA 移动 ID - 配置为 Azure AD B2C 外部提供者的 OpenID Connect (OIDC) 提供者
-
IDEMIA 移动 ID 应用程序 - 手机应用中的驾照或州政府身份证的数字版本
- 请参阅 IDEMIA 移动 ID
移动 ID 是数字化的标识文档,是 DMV 用来验证单个标识的便携式移动标识令牌。 签名的数字化 ID 存储在用户移动电话上,作为边缘计算中的身份标识。 已签名的凭据简化了对年龄证明、了解客户财务状况、帐户访问等标识服务的访问。
下图演示了使用移动 ID 的注册和登录用户流。
- 用户访问 Azure AD B2C 登录页面(回复方),使用其设备和移动 ID 执行交易。
- Azure AD B2C 执行 ID 检查。 它使用 OIDC 授权代码流将用户重定向到 IDEMIA 路由器。
- 路由器使用身份验证和授权请求详细信息向用户的移动应用发送生物识别质询。
- 根据安全性,可能会提示用户提供更多详细信息:输入 PIN、获取实时自拍或两者。
- 身份验证响应提供所有权、在场和同意证明。 响应将返回到路由器。
- 路由器验证用户信息,并将结果回复给 Azure AD B2C。
- 授予或拒绝用户访问权限。
启用移动 ID
若要开始,请转到 idemia.com “登录” 页面请求演示。 在请求表单文本字段中,指示你对 Azure AD B2C 集成的兴趣。
将移动 ID 与 Azure AD B2C 集成
使用以下部分来准备和执行集成过程。
先决条件
若要开始,需要:
持有美国州颁发移动身份证凭证(mID)的 IDEMIA 用户的访问权限
- 或者在测试阶段拥有 IDEMIA 的 mID 演示应用程序
Azure 订阅服务
- 如果没有帐户,请获取 Azure 免费帐户
一个关联到 Azure 订阅的 Azure AD B2C 租户
在 Azure AD B2C 租户中注册的业务 Web 应用程序
- 若要进行测试,请配置 https://jwt.ms 以解码令牌内容的 Microsoft Web 应用程序。
注释
令牌内容不会离开你的浏览器。
为 mID 提交信赖方应用程序
在移动 ID 集成期间,提供了以下信息。
资产 | DESCRIPTION |
---|---|
应用程序名称 | Azure AD B2C 或其他应用程序名称 |
Client_ID | 标识提供者 (IdP) 的唯一标识符 |
客户端密码 | 由信赖方应用程序用来对 IDEMIA IdP 进行身份验证的密码 |
元数据端点 | 指向令牌颁发者配置文档的 URL,也称为 OpenID 已知配置终结点 |
重定向 URI | https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp 例如: https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/oauth2/authresp 如果使用自定义域,请输入 https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp 。 |
注销后重定向 URI | https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/{policy}/oauth2/v2.0/logout 发送注销请求。 |
注释
稍后需要客户端 ID 和客户端密码才能在 Azure AD B2C 中配置 IdP。
创建策略密钥
将记下的 IDEMIA 客户端机密存储在 Azure AD B2C 租户中。 对于以下说明,请使用包含你的 Azure AD B2C 租户的目录。
- 登录到 Azure 门户。
- 在门户工具栏中,选择 “目录 + 订阅”。
- 在 门户设置“目录 + 订阅 ”页上的 “目录名称 ”列表中,找到 Azure AD B2C 目录
- 选择“ 切换”。
- 在 Azure 门户的左上角,选择 “所有服务”。
- 搜索并选择“Azure AD B2C”。
- 在“概述”页上,选择“Identity Experience Framework”。
- 选择 策略密钥。
- 选择 并添加。
- 对于“选项”,选择“手动”。
- 输入策略密钥的名称。 例如,
IdemiaAppSecret
。B2C_1A_
前缀将添加到密钥名称。 - 在 机密中,输入所记录的客户端密码。
- 对于 密钥 用法,请选择“ 签名”。
- 选择 创建。
将 Mobile ID 配置为外部 IdP
若要使用户能够使用移动 ID 登录,请将 IDEMIA 定义为声明提供程序。 此操作确保 Azure AD B2C 通过某个终结点进行通信,并提供声明来让 Azure AD B2C 使用生物识别验证用户身份。
若要将 IDEMIA 定义为声明提供程序,请将其添加到策略扩展文件中的 ClaimsProvider 元素。
<TechnicalProfile Id="Idemia-Oauth2">
<DisplayName>IDEMIA</DisplayName>
<Description>Login with your IDEMIA identity</Description>
<Protocol Name="OAuth2" />
<Metadata>
<Item Key="METADATA">https://idp.XXXX.net/oxauth/.well-known/openid-configuration</Item>
<!-- Update the Client ID below to the Application ID -->
<Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</Item>
<Item Key="response_types">code</Item>
<Item Key="scope">openid id_basic mt_scope</Item>
<Item Key="response_mode">form_post</Item>
<Item Key="HttpBinding">POST</Item>
<Item Key="UsePolicyInRedirectUri">false</Item>
<Item Key="token_endpoint_auth_method">client_secret_basic</Item>
<Item Key="ClaimsEndpoint">https://idp.XXXX.net/oxauth/restv1/userinfo</Item>
<Item Key="ValidTokenIssuerPrefixes">https://login.microsoftonline.com/</Item>
</Metadata>
<CryptographicKeys>
<Key Id="client_secret" StorageReferenceId="B2C_1A_IdemiaAppSecret" />
</CryptographicKeys>
<InputClaims>
<InputClaim ClaimTypeReferenceId="acr" PartnerClaimType="acr_values" DefaultValue="loa-2" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
<OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid" />
<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="firstName1" />
<OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="lastName1" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="idemia" />
<OutputClaim ClaimTypeReferenceId="documentId" />
<OutputClaim ClaimTypeReferenceId="address1" />
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
<OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
<OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
<OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
</OutputClaimsTransformations>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
</TechnicalProfile>
将client_id设置为应用程序注册中的应用程序 ID。
资产 | DESCRIPTION |
---|---|
范围 | 对于 OpenID Connect (OIDC),最低要求设置为 openid 的范围参数。 将更多范围追加为以空格分隔的列表。 |
重定向URI | 此位置是用户代理将授权代码发送到 Azure AD B2C 的位置。 |
response_type(响应类型) | 对于授权代码流,请选择“code” |
acr_values | 此参数控制用户在身份验证期间必须执行的身份验证方法。 |
选择以下值之一:
参数值 | 对用户身份验证过程的影响 |
---|---|
loa-2 |
仅限基于加密的 Microsoft Entra 多重身份验证 |
loa-3 |
基于加密的 MFA 以及另一个因素 |
loa-4 |
基于加密的 MFA,加上用户执行 PIN 和生物识别身份验证 |
/userinfo 终结点为授权请求中请求的范围提供声明。 <对于mt_scope>,有一些声明,如名字、姓氏和驾驶执照号等。 为范围设置的声明在发现 API 的 scope_to_claims_mapping 部分中发布。 Azure AD B2C 从声明终结点请求声明,并在 OutputClaims 元素中返回这些声明。 你可能需要将策略中的声明名称映射到 IdP 中的名称。 在 ClaimSchema 元素中定义声明类型:
<ClaimType Id="documentId">
<DisplayName>documentId</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="address1">
<DisplayName>address</DisplayName>
<DataType>string</DataType>
</ClaimType>
添加用户旅程
对于这些说明,已设置 IdP,但它不会显示在任何登录页中。 如果没有自定义用户旅程,请复制模板用户旅程。
- 从入门包中打开
TrustFrameworkBase.xml
文件。 - 找到并复制包含
UserJourneys
的ID=SignUpOrSignIn
元素的内容。 - 打开
TrustFrameworkExtensions.xml
。 - 找到 UserJourneys 元素。 如果没有元素,请添加一个。
- 将 UserJourney 元素的内容粘贴为 UserJourneys 元素的子元素。
- 重命名用户旅程 ID。 例如,
ID=CustomSignUpSignIn
。
将 IdP 添加到用户旅程
如果有用户旅程,请将新的 IdP 添加到其中。 首先添加一个登录按钮,然后将其链接到某个操作,即创建的技术配置文件。
- 在用户旅程中,找到包含 Type=
CombinedSignInAndSignUp
或 Type=ClaimsProviderSelection
的业务流程步骤元素。 通常这是第一个编排步骤。 ClaimsProviderSelections 元素包含用于用户登录的 IdP 列表。 元素控件的顺序是用户看到的登录按钮的顺序。 - 添加ClaimsProviderSelection XML 元素。
- 将 TargetClaimsExchangeId 值设置为友好名称。
- 添加 ClaimsExchange 元素。
- 将 ID 设置为目标声明交换 ID 的值。
- 将 TechnicalProfileReferenceId 值更新为创建的技术配置文件 ID。
以下 XML 演示了 IdP 用户旅程的前两个业务流程步骤:
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="IdemiaExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="IdemiaExchange" TechnicalProfileReferenceId="Idemia-Oauth2" />
</ClaimsExchanges>
</OrchestrationStep>
配置信赖方策略
信赖方策略(例如 SignUpSignIn.xml)指定 Azure AD B2C 执行的用户旅程。
- 在信赖方中找到 DefaultUserJourney 元素。
- 更新 ReferenceId,使其与已在其中添加 IdP 的用户旅程 ID 匹配。
在以下示例中,对于 CustomSignUpOrSignIn
的用户旅程,ReferenceId 设置为 CustomSignUpOrSignIn
。
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
上传自定义策略
对于以下说明,请使用包含你的 Azure AD B2C 租户的目录。
登录到 Azure 门户。
在门户工具栏中,选择 “目录 + 订阅”。
在 门户设置“目录 + 订阅 ”页上的 “目录名称 ”列表中,找到 Azure AD B2C 目录。
选择“ 切换”。
在 Azure 门户中,搜索并选择 Azure AD B2C。
在“策略”下,选择“Identity Experience Framework”。
选择“ 上传自定义策略”。
按以下顺序上传更改的两个策略文件:
- 扩展策略,例如
TrustFrameworkExtensions.xml
- 信赖方策略,例如
SignUpSignIn.xml
- 扩展策略,例如
测试自定义策略
- 选择依赖方策略,例如
B2C_1A_signup_signin
。 - 对于 应用程序,请选择已注册的 Web 应用程序。
-
“回复 URL”显示为
https://jwt.ms
。 - 选择“立即运行”。
- 在注册或登录页中,选择 “IDEMIA”。
- 浏览器将重定向到
https://jwt.ms
。 请参阅 Azure AD B2C 返回的令牌内容。
了解详细信息 :教程:在 Azure AD B2C 中注册 Web 应用程序
后续步骤
- Azure AD B2C 自定义策略概述
- 教程:在 Azure AD B2C 中创建用户流和自定义策略
- 请访问 idemia.com,了解如何通过移动ID以更大的隐私性证明您的身份