azure - 记住 Azure Active Directory Xamarin Forms 中上次登录的用户

标签 azure xamarin.forms azure-active-directory adal xamarin.uwp

我正在使用 Azure AD 对我的 Xamarin 表单应用程序中的用户进行身份验证,以及我想要在我的 UWP 应用程序中实现的目标:如果一个用户允许登录应用程序,然后注销。在下一个登录流程中,Azure AD 应显示登录该特定设备的用户列表,以便用户可以选择用户并只需输入密码。

就我而言,如果我注销用户,那么它总是从询问电子邮件和密码开始流程

这是注销的代码片段

AuthenticationContext authContext = new AuthenticationContext($"{tenantUrl}/{tenantId}");
                authContext.TokenCache.Clear();

                Windows.Web.Http.Filters.HttpBaseProtocolFilter myFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter();
                var cookieManager = myFilter.CookieManager;
                var cookieUri = new System.Uri(tenantUrl);
                HttpCookieCollection myCookieJar = cookieManager.GetCookies(cookieUri);
                foreach (HttpCookie cookie in myCookieJar)
                {
                    cookieManager.DeleteCookie(cookie);
                }

P.S:似乎是 UWP ADAL 包的问题,​​因为同样的东西在 iOS 上运行良好

最佳答案

问得好!

ADAL 中需要进行修复(需要发布新版本,因此高于 5.0.2 预览版的任何版本都将包含修复)以在 UWP 中处理此问题。

将此代码添加到您的应用中:

var x = Windows.Security.Authentication.Web.WebAuthenticationBroker.GetCurrentApplicationCallbackUri();

获取值(如下所示:ms-app://s-1-15-2-111638678-219698677-36916742-1909548894-372823757-39941306-27685825/)并注册值作为此应用程序门户中的redirectUri。

然后,回到代码中, 不要传入上述值 (x) 作为重定向URI,而是传入 null。 ADAL/MSAL 会将重定向 uri 设置为 https://sso,它将通过 WebAuthenticationManager 进行路由,您现在应该会看到帐户列表,就像在 iOS 上一样。

您可能也对此感兴趣 documentation同样,特别是在公司网络上出现问题时。

关于azure - 记住 Azure Active Directory Xamarin Forms 中上次登录的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55602126/

相关文章:

xaml - 在没有 "The type ' 的 Xamarin.Forms XAML 中定义颜色颜色'不支持直接内容“

ios - Xamarin.iOS 相当于 Xamarin.Android 的 CookieManager.Instance

Azure AD 元数据和用户信息不支持 CORS

azure - 使用托管标识从 Azure 逻辑应用程序向 Azure Function 进行身份验证

azure - Windows Azure - 限制访问 Web 角色的 IP 地址范围

azure - 是否可以使用 RBAC 允许对应用服务的应用程序设置进行只读访问?

azure - 禁用 Azure 应用服务的外部 IP

azure - Azure Functions 应用程序的项目级别文化设置

c# - 如何在 Xamarin.Forms 中获取嵌入文件的 URL/路径

c# - AcquireTokenByAuthorizationCode 使用 Azure Active Directory 在使用 ASP.NET MVC 的单租户应用程序中引发新异常