使用Xamarin和Azure AD B2C丢失自定义选项卡的后备

问题描述 投票:1回答:2

我跟着Xamarin Authorization with Azure AD B2C上的样本

它使用自定义Chrome标签(和Safari等效标签)。

如果移动设备上未安装Chrome,我找不到任何有关如何处理案例的资源。我刚刚在模拟器中注意到,它只是引发了一个必须安装Chrome的错误对话框。但我不想排除使用其他浏览器的用户登录/注销。

是否有任何链接/教程涵盖此(关键)行为?

xamarin azure-active-directory azure-ad-b2c chrome-custom-tabs msal
2个回答
1
投票

MSAL现在支持使用Android / iOS嵌入式浏览器的后备:

https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/msal-net-2-released#you-can-now-leverage-the-embedded-web-browser-in-xamarinios-and-xamarinandroid

您现在可以利用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视图实现可能在将来发生变化


0
投票

您将不得不使用不同的库,例如:

AppAuth for Android

“当设备上的浏览器(例如Chrome)提供自定义标签实施时,自定义标签用于授权请求。否则,默认浏览器将用作后备。”

AppAuth for iOS

“iOS 9+使用应用内浏览器标签模式(通过SFSafariViewController),并在早期版本中回退到系统浏览器(移动版Safari)。”

(请注意,Microsoft身份验证库与the IETF's Best Current Practice for OAuth 2.0 for Native Apps一致:

“......目前最好的做法是在外部用户代理(通常是浏览器)中执行OAuth授权请求,而不是嵌入式用户代理(例如使用Web视图实现的代理)。”

© www.soinside.com 2019 - 2024. All rights reserved.