我正在使用 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/