我正在使用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)作为redirectURI,传入null。 ADAL / MSAL会将重定向uri设置为https://sso
,它将通过WebAuthenticationManager进行路由,您现在应该看到一个帐户列表,就像在iOS上一样。
你也可能对这个documentation感兴趣,特别是如果在公司网上有问题的话。