记住Azure Active Directory Xamarin表单中的最后登录用户

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

我正在使用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上工作正常

azure xamarin.forms azure-active-directory adal xamarin.uwp
2个回答
1
投票

好问题!

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)作为redirectURI,传入null。 ADAL / MSAL会将重定向uri设置为https://sso,它将通过WebAuthenticationManager进行路由,您现在应该看到一个帐户列表,就像在iOS上一样。

你也可能对这个documentation感兴趣,特别是如果在公司网上有问题的话。


0
投票

使用ADAL包,您将看不到上次登录用户的电子邮件ID。但是,如果您默认使用MSAL包,您将能够看到上次登录用户的电子邮件ID列表。我尝试使用本地计算机和MSAL包,我可以看到用户的电子邮件ID列表。以下是截图。

enter image description here

我希望以上信息对您有所帮助。

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