你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:配置 IDEMIA 移动 ID 与 Azure Active Directory 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 应用程序 - 驾照或州颁发的 ID 的数字版本,保存在手机应用中

移动 ID 是一个数字身份证明文档,是由 DMV 用来验证个人身份的便携式移动标识令牌。 已签名的数字 ID 作为边缘标识存储在用户手机上。 已签名的凭据简化了对年龄证明、了解客户财务状况、帐户访问等标识服务的访问。

下图演示了使用移动 ID 的注册和登录用户流。

使用移动 ID 的注册和登录用户流的示意图。

  1. 用户使用其设备和移动 ID 访问 Azure AD B2C 登录页(信赖方)以展开交易。
  2. Azure AD B2C 执行 ID 检查。 它使用 OIDC 授权代码流将用户重定向到 IDEMIA 路由器。
  3. 路由器向用户的移动应用发送生物识别质询,其中包含身份验证和授权请求详细信息。
  4. 根据安全性,系统可能会提示用户提供更多详细信息:输入 PIN 和/或进行实时自拍。
  5. 身份验证响应提供拥有、存在和同意证明。 响应返回到路由器。
  6. 路由器验证用户信息并将结果回复给 Azure AD B2C。
  7. 授予或拒绝用户访问权限。

启用移动 ID

若要开始,请转到 idemia.com 的“取得联系”页以请求演示。 在请求表单文本字段中,指明你对 Azure AD B2C 集成感兴趣。

将移动 ID 与 Azure AD B2C 集成

参考以下部分来准备和执行集成过程。

先决条件

要开始,需要:

  • 拥有用户访问权限和美国州颁发的 IDEMIA 移动 ID 凭据 (mID)

    • 或者在测试阶段拥有 IDEMIA 的 mID 演示应用程序
  • Azure 订阅

  • 一个关联到 Azure 订阅的 Azure AD B2C 租户

  • 在 Azure AD B2C 租户中注册的商务 Web 应用程序

    • 要进行测试,请配置 https://jwt.ms,这是一个包含已解码令牌内容的 Microsoft Web 应用程序

    注意

    令牌内容不会离开你的浏览器。

为 mID 提交信赖方应用程序

在移动 ID 集成期间,需要提供以下信息。

属性 描述
应用程序名称 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 租户的目录。

  1. 登录 Azure 门户
  2. 在门户工具栏中,选择“目录 + 订阅”。
  3. 在“门户设置”>“目录 + 订阅”页上的“目录名称”列表中,找到你的 Azure AD B2C 目录
  4. 选择“切换”。
  5. 在 Azure 门户左上角,选择“所有服务”。
  6. 搜索并选择“Azure AD B2C”。
  7. 在“概述”页上,选择“Identity Experience Framework”。
  8. 选择“策略密钥”。
  9. 选择 添加
  10. 对于“选项”,选择“手动”。
  11. 输入策略密钥的名称。 例如,IdemiaAppSecret。 密钥名称中将添加前缀 B2C_1A_
  12. 在“机密”中,输入前面记下的客户端机密。
  13. 对于“密钥”用法,请选择“签名” 。
  14. 选择“创建” 。

将移动 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。

属性 说明
作用域 对于 OpenID Connect (OIDC),最低要求是将范围参数设置为 openid。 以空格分隔列表的形式追加更多范围。
redirect_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,但它不会显示在任何登录页中。 如果你没有自定义用户旅程,请复制一个模板用户旅程。

  1. 在初学者包中,打开 TrustFrameworkBase.xml 文件。
  2. 找到并复制 UserJourneys 元素的内容,其中包括 ID=SignUpOrSignIn
  3. 打开 TrustFrameworkExtensions.xml
  4. 找到 UserJourneys 元素。 如果没有此元素,请添加一个。
  5. 将 UserJourney 元素的内容粘贴为 UserJourneys 元素的子项。
  6. 重命名用户旅程 ID。 例如,ID=CustomSignUpSignIn

将 IdP 添加到用户旅程

如果有用户旅程,请将新的 IdP 添加到其中。 首先添加一个登录按钮,然后将其链接到某个操作,即创建的技术配置文件。

  1. 在用户旅程中,找到包含 Type=CombinedSignInAndSignUp 或 Type=ClaimsProviderSelection 的业务流程步骤元素。 这通常是第一个业务流程步骤。 ClaimsProviderSelections 元素包含可供用户用来登录的 IdP 列表。 元素控件的顺序是向用户显示登录按钮的顺序。
  2. 添加 ClaimsProviderSelection XML 元素。
  3. 将 TargetClaimsExchangeId 值设置为易记名称。
  4. 添加 ClaimsExchange 元素。
  5. 将 ID 设为目标声明交换 ID 的值。
  6. 将 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 执行的用户旅程。

  1. 在信赖方中找到 DefaultUserJourney 元素。
  2. 更新 ReferenceId,使其与已在其中添加 IdP 的用户旅程 ID 匹配。

在以下示例中,对于 CustomSignUpOrSignIn 用户旅程,将 ReferenceId 设置为 CustomSignUpOrSignIn

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

上传自定义策略

对于以下说明,请使用包含你的 Azure AD B2C 租户的目录。

  1. 登录 Azure 门户

  2. 在门户工具栏中,选择“目录 + 订阅”。

  3. 在“门户设置,目录 + 订阅”页上的“目录名称”列表中,找到你的 Azure AD B2C 目录。

  4. 选择“切换”。

  5. 在 Azure 门户中,搜索并选择“Azure AD B2C”。

  6. 在“策略”下,选择“Identity Experience Framework”。

  7. 选择“上传自定义策略”。

  8. 按以下顺序上传已更改的两个策略文件:

    • 扩展策略,例如 TrustFrameworkExtensions.xml
    • 信赖方策略,例如 SignUpSignIn.xml

测试自定义策略

  1. 选择信赖方策略,例如 B2C_1A_signup_signin
  2. 对于“应用程序”,请选择已注册的 Web 应用程序。
  3. “回复 URL”显示为 https://jwt.ms
  4. 选择“立即运行”。
  5. 在注册或登录页中,选择“IDEMIA”。
  6. 浏览器将重定向到 https://jwt.ms。 查看 Azure AD B2C 返回的令牌内容。

详细了解:教程:在 Azure AD B2C 中注册 Web 应用程序

后续步骤