我跟着Xamarin Authorization with Azure AD B2C上的样本
它使用自定义Chrome标签(和Safari等效标签)。
如果移动设备上未安装Chrome,我找不到任何有关如何处理案例的资源。我刚刚在模拟器中注意到,它只是引发了一个必须安装Chrome的错误对话框。但我不想排除使用其他浏览器的用户登录/注销。
是否有任何链接/教程涵盖此(关键)行为?
MSAL现在支持使用Android / iOS嵌入式浏览器的后备:
您现在可以利用Xamarin.iOS和Xamarin.Android中的嵌入式Web浏览器
在以前版本的MSAL.NET中,Xamarin.Android和Xamarin.iOS使用系统Web浏览器与Chrome选项卡进行交互。如果你想从SSO中获益,这是很棒的,但是那些设备制造商没有提供Chrome的Android手机或者最终用户已经禁用了Chrome。作为应用程序开发人员,您现在可以利用嵌入式浏览器。为了支持这一点,UIParent类现在有一个构造函数,它使用布尔值来指定是否要选择嵌入式浏览器。它还有一个静态方法IsSystemWebviewAvailable(),以帮助您决定是否要使用它。例如,在Android上:bool useSystemBrowser = UIParent.IsSystemWebviewAvailable(); App.UIParent = new UIParent(Xamarin.Forms.Forms.Context as Activity,!useSystemBrowser);
有关此可能性的更多详细信息,请参阅MSAL概念文档中的文章:https://aka.ms/msal-net-uses-web-browser。此外,Web视图实现可能在将来发生变化
您将不得不使用不同的库,例如:
“当设备上的浏览器(例如Chrome)提供自定义标签实施时,自定义标签用于授权请求。否则,默认浏览器将用作后备。”
“iOS 9+使用应用内浏览器标签模式(通过SFSafariViewController),并在早期版本中回退到系统浏览器(移动版Safari)。”
(请注意,Microsoft身份验证库与the IETF's Best Current Practice for OAuth 2.0 for Native Apps一致:
“......目前最好的做法是在外部用户代理(通常是浏览器)中执行OAuth授权请求,而不是嵌入式用户代理(例如使用Web视图实现的代理)。”