你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Active Directory B2C 中的 TypingDNA 配置教程
在本演练中,了解如何将 Azure Active Directory B2C 中的示例在线支付应用与 TypingDNA 应用集成。 通过使用 TypingDNA 应用,Azure AD B2C 客户可以通过击键动态和强大的客户身份验证满足付款服务指令 2 (PSD2) 事务要求。 在此处了解有关 TypingDNA 的详细信息。
Azure AD B2C 使用 TypingDNA 技术捕获用户键入特征,并记录和分析它们以熟悉每一层身份验证。 这增加了一层与身份验证风险有关的保护,并且会评估风险级别。 Azure AD B2C 可以通过调用 Microsoft Entra 多重身份验证、强制实施电子邮件验证或适用于你的方案的任何其他自定义逻辑,调用其他机制,以便你更有信心确定用户是他们所声明的身份。
注意
此示例策略基于 SocialAndLocalAccountsWithMfa 初学者包。
方案描述
注册
Azure AD B2C 页面使用 TypingDNA 的 JavaScript 库来记录用户的键入模式。 例如,在初始注册时,将在注册时记录用户名和密码,之后在每次登录时使用此信息进行验证。
当用户提交页面时,TypingDNA 库将计算用户的键入特征。 然后将此信息插入 Azure AD B2C 呈现的隐藏文本字段。 已使用 CSS 隐藏此字段。
此示例包含 HTML 文件,其中包含 JavaScript 和 CSS 修改,并由
api.selfasserted.tdnasignin
和api.selfasserted.tdnasignup
内容定义引用。 请参阅托管页面内容以托管 HTML 文件。现在,在用户提交凭据时,Azure AD B2C 在声明包中包含键入模式。 它必须调用你的 API 才能将此数据传递到 TypingDNA REST API 终结点。 此 API 包含在示例 (typingDNA-API-Interface) 中。
然后,中间层 API 将键入模式数据传递到TypingDNA REST API。 注册时,将调用检查用户终结点以确认用户是否不存在,然后调用保存模式终结点以保存用户的第一种键入模式。
注意
对 TypingDNA REST API 终结点的所有调用都会发送一个 UserId。 此值必须为哈希值。 Azure AD B2C 使用 HashObjectIdWithEmail
声明转换通过随机盐和机密对电子邮件进行哈希处理。
REST API 调用在 LocalAccountSignUpWithLogonEmail-TDNA
中使用 validationTechnicalProfiles
进行建模:
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail-TDNA" />
<ValidationTechnicalProfile ReferenceId="REST-TDNA-CheckUser" ContinueOnError="true"/>
<ValidationTechnicalProfile ReferenceId="REST-TDNA-SaveUser"/>
</ValidationTechnicalProfiles>
登录
在后续登录时,用户键入模式的计算方式与使用自定义 HTML 进行注册时的计算方式相同。 如果键入配置文件位于 Azure AD B2C 声明包中,Azure AD B2C 将调用你的 API 来调用 TypingDNA REST API 终结点。 调用检查用户终结点以确认用户是否存在。 接下来,调用验证模式终结点以返回 net_score
。 此 net_score
表示键入模式与注册时的原始键入模式的相似程度。
此键入模式在 SelfAsserted-LocalAccountSignin-Email-TDNA
中使用 validationTechnicalProfiles
进行建模:
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="login-NonInteractive"/>
<ValidationTechnicalProfile ReferenceId="REST-TDNA-CheckUser" ContinueOnError="false"/>
<ValidationTechnicalProfile ReferenceId="REST-TDNA-VerifyUser"/>
<ValidationTechnicalProfile ReferenceId="REST-TDNA-SaveUser">
<Preconditions>
<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
<Value>saveTypingPattern</Value>
<Value>False</Value>
<Action>SkipThisValidationTechnicalProfile</Action>
</Precondition>
</Preconditions>
</ValidationTechnicalProfile>
</ValidationTechnicalProfiles>
如果用户获取的键入模式的 net_score
较高,则可以使用 TypingDNA 保存键入模式终结点保存此模式。
如果你希望 Azure AD B2C 通过你的 API 调用 TypingDNA 保存键入模式终结点,API 必须返回声明 saveTypingPattern
。
存储库中的示例包含使用以下属性配置的 API (TypingDNA-API-Interface)。
训练模式 - 如果用户保存的模式少于两个,则始终提示进行 MFA。
如果用户已保存 2 至 5 个模式,且
net_score
低于 50,则会提示进行 MFA。如果用户已保存 5 个以上模式,且
net_score
低于 65,则会提示进行 MFA。
在你的用例中,应调整这些阈值。
API 计算
net_score
后,应将布尔声明返回到 B2C -promptMFA
。promptMFA
声明在先决条件内用于有条件地执行 Microsoft Entra 多重身份验证。
<OrchestrationStep Order="3" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>isActiveMFASession</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
<Value>promptMFA</Value>
<Value>False</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="PhoneFactor-Verify" TechnicalProfileReferenceId="PhoneFactor-InputOrVerify" />
</ClaimsExchanges>
</OrchestrationStep>
加入 TypingDNA
- 在此处注册 TypingDNA
- 登录到 TypingDNA 仪表板,获取“API 密钥”和“API 机密”。 稍后设置 API 接口时需要此信息
将 TypingDNA 与 Azure AD B2C 集成
将 TypingDNA-API-Interface 托管在所选托管提供商处
将 TypingDNA-API-Interface 解决方案中的所有
apiKey
和apiSecret
实例替换为 TypingDNA 仪表板中的凭据按照此处的 CORS 要求,在所选的提供商处托管 HTML 文件
将
TrustFrameworkExtensions.xml
文件中的api.selfasserted.tdnasignup
和api.selfasserted.tdnasignin
内容定义的 LoadURI 元素分别替换为托管的 HTML 文件的 URI。在“Azure 门户”的“Microsoft Entra”边栏选项卡中的“Identity Experience Framework”下,创建 B2C 策略密钥。 使用
Generate
选项并将此密钥命名为tdnaHashedId
。替换策略文件中的 TenantId
将所有 TypingDNA REST API 技术配置文件(REST-TDNA-VerifyUser、REST-TDNA-SaveUser、REST-TDNA-CheckUser)中的 ServiceURL 替换为 TypingDNA-API-Interface API 的终结点。
将策略文件上传到租户。
测试用户流
打开 B2C 租户,并选择“Identity Experience Framework”。
选择前面创建的用户流。
选择“运行用户流”
a. 应用程序 - 选择已注册的应用(例如 JWT)
b. 回复 URL - 选择重定向 URL
c. 选择“运行用户流”。
完成注册流并创建帐户
注销
完成登录流
生成的 JWT 结果将显示 TypingDNA 结果
实时版本
• 在此测试版本中已禁用 MFA,但你可以查看在身份验证后声明 promptMFA
是否提示进行 MFA 的结果。
后续步骤
有关更多信息,请查看以下文章: