你当前正在访问 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 的数字版本,保存在手机应用中
- 请参阅 IDEMIA 移动 ID
移动 ID 是一个数字身份证明文档,是由 DMV 用来验证个人身份的便携式移动标识令牌。 已签名的数字 ID 作为边缘标识存储在用户手机上。 已签名的凭据简化了对年龄证明、了解客户财务状况、帐户访问等标识服务的访问。
下图演示了使用移动 ID 的注册和登录用户流。
- 用户使用其设备和移动 ID 访问 Azure AD B2C 登录页(信赖方)以展开交易。
- Azure AD B2C 执行 ID 检查。 它使用 OIDC 授权代码流将用户重定向到 IDEMIA 路由器。
- 路由器向用户的移动应用发送生物识别质询,其中包含身份验证和授权请求详细信息。
- 根据安全性,系统可能会提示用户提供更多详细信息:输入 PIN 和/或进行实时自拍。
- 身份验证响应提供拥有、存在和同意证明。 响应返回到路由器。
- 路由器验证用户信息并将结果回复给 Azure AD B2C。
- 授予或拒绝用户访问权限。
启用移动 ID
若要开始,请转到 idemia.com 的“取得联系”页以请求演示。 在请求表单文本字段中,指明你对 Azure AD B2C 集成感兴趣。
将移动 ID 与 Azure AD B2C 集成
参考以下部分来准备和执行集成过程。
先决条件
要开始,需要:
拥有用户访问权限和美国州颁发的 IDEMIA 移动 ID 凭据 (mID)
- 或者在测试阶段拥有 IDEMIA 的 mID 演示应用程序
Azure 订阅
- 如果没有,获取一个 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 租户的目录。
- 登录 Azure 门户。
- 在门户工具栏中,选择“目录 + 订阅”。
- 在“门户设置”>“目录 + 订阅”页上的“目录名称”列表中,找到你的 Azure AD B2C 目录
- 选择“切换”。
- 在 Azure 门户左上角,选择“所有服务”。
- 搜索并选择“Azure AD B2C”。
- 在“概述”页上,选择“Identity Experience Framework”。
- 选择“策略密钥”。
- 选择 添加 。
- 对于“选项”,选择“手动”。
- 输入策略密钥的名称。 例如,
IdemiaAppSecret
。 密钥名称中将添加前缀B2C_1A_
。 - 在“机密”中,输入前面记下的客户端机密。
- 对于“密钥”用法,请选择“签名” 。
- 选择“创建” 。
将移动 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,但它不会显示在任何登录页中。 如果你没有自定义用户旅程,请复制一个模板用户旅程。
- 在初学者包中,打开
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:以更高的隐私性证明身份