我们使用Azure B2C对用户进行登录/身份验证。这在我们的网站上运行良好(社交和电子邮件登录等(。我们的移动应用程序是以Xamarin形式构建的,我们正在尝试构建一种本地登录体验(使用本地应用程序控件与B2C提供的应用程序中的网络视图(,该体验与用于登录的设备生物特征(FaceId、TouchId、指纹登录(本地集成。正如你所能想象的,在Azure B2C所需的网络视图中这样做不允许本地登录体验。这里的总体目标是2倍:
- 构建本地登录体验
- 与生物识别技术集成
问题:
- Azure B2C是否有启用此功能的API,特别是这样我们就可以在没有UI的情况下使用授权代码流。ROPC存在,但它也与社交账户整合了吗
- 如果没有,当登录屏幕显示在网络视图中时,是否有方法将生物识别登录与移动设备上的Azure B2C集成?因此,当网络视图中的B2C登录页面出现时,用户可以使用touch/faceId登录,并将该信息保存到他们的钥匙链中(在iOS和Android上相当(
您需要使用webview,并且可以启用生物识别与webview类型体验的集成。
-
您不能将任何服务与社会账户和ROPC集成。任何与Social IdP的集成都需要一个网络视图。
-
是,为长期会话启用"保持我登录"。将生物特征代码包裹在acquireTokenSilent((方法周围。
然后您有两个选项:
-
您可以隐藏KMSI按钮,并使用JavaScript通过页面自定义强制选择登录页面中的KMSI复选框。
-
您可以在登录页面上重命名KMSI标签,询问用户是否要注册生物识别。然后在登录后,您的应用程序将在令牌中收到一个声明,无论用户是否选择加入,都可以使用声明解析器来实现这一点。
现在您有一个用户登录到应用程序,使用:
- 1小时访问令牌
- 可能长达无穷长的刷新令牌
- 多日/年Azure AD B2C会话cookie
然后,当用户再次尝试打开应用程序或在应用程序中执行某些操作时,您需要调用acquireTokenSilent((。此MSAL方法获取所需API资源/作用域的新访问令牌。
如果令牌已过期,或者需要不同的作用域,则会获取新的令牌。
您可以使用生物识别SDK包装应用程序中的任何操作。
if (performingSomeAction && requiresBiometric)
if (challengeBiometric succeeds)
acquireTokenSilent()
//do someAction
现在,如果刷新令牌已过期,则会弹出web视图,长寿命会话cookie将用于获取新令牌。acquireTokenSilent((方法已经处理了所有这些。