【Azure 环境】移动应用 SSO 登录AAD, MSAL的配置为Webview模式时登录页面无法加载
问题描述
移动端集成MASL登录过程中,配置文件中配置项“authorization_user_agent”使用“DEFAULT”可以正常登录,但是改为“WEBVIEW”后就无法登陆,一直处于Loading状态。
参考的示例文档:
- https://docs.microsoft.com/zh-cn/azure/active-directory/develop/tutorial-v2-android
- https://docs.microsoft.com/zh-cn/azure/active-directory/develop/msal-configuration?source=recommendations
问题解答
按照 MSAL Configuration 文档对 authorization_user_agent 的描述, default和webview的区别是webview使用嵌入式的 Web 弹出框访问AAD. Default将采用系统默认的浏览器访问AAD。
如果使用 BROWSER 和DEFAULT 都没有问题,那么就是因为使用WEBVIEW,需要 AAD Application使用 Brokered Authentication。 详细说明见:https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-android-single-sign-on#sso-through-system-browser
这需要实现:
1. 设备需要安装 Microsoft Authenticator 或者 Intune Company Portal. 并且完成设备在 Microsoft Authenticator 或者 Intune中的注册。
2. MSAL 配置中设置"broker_redirect_uri_registered": true
附录:
1)安装Company Portal App,并且使用分配好license的AAD用户enroll android设备到AAD. https://docs.microsoft.com/en-us/mem/intune/user-help/enroll-device-android-company-portal
2)安装 Microsoft Authenticator应用 https://support.microsoft.com/zh-cn/account-billing/%E4%B8%AD%E5%9B%BD%E5%85%AC%E6%9C%89%E4%BA%91%E4%B8%AD%E9%80%82%E7%94%A8%E4%BA%8E-android-%E7%9A%84authenticator-ebbef05c-a429-4236-8570-1bb1900fec35
3) 设置使用移动应用(Android)发送通知 https://docs.azure.cn/zh-cn/active-directory/authentication/howto-mfa-mfasettings
请注意,设置扫描QR码的时候,由于国内手机用户不能使用 Google App store的限制, 需要点击Configure app without notification。
4) WEBVIEW和broken authentication在Android设备上的具体要求 https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-android-single-sign-on#sso-through-system-browser
5) 使用的是系统默认浏览器。华为P30,华为Pad,小米手机所使用的System Browser没有包含在MSAL的缺省Browser Safelist里,无法登录访问AAD
- 添加Browser Safelist到.conf文件里:https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-configuration#browser_safelist
- 最新的MSAL模块中包含的browser safelist: https://github.com/AzureAD/microsoft-authentication-library-for-android/blob/dev/msal/src/main/res/raw/msal_default_config.json
PS: 目前缺省的华为浏览器(com.huawei.browser)不在MSAL default browser safelist里。可以在Github提交问题,看能否添加华为浏览器到 MSAL default browser safelist里。
[END]
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!