我们的 UWP 应用使用 Azure AD 进行身份验证。当我运行该应用程序时,系统提示我登录,我这样做了并且身份验证成功。现在我无法返回“退出”状态。每当我运行该应用程序时,我都会自动登录。我已经调用SignOutAsync()
了 WebAccount,但它似乎没有任何效果。
首先,我称之为:
private async Task SignOutAccountAsync(WebAccount account)
{
// remove local settings
ApplicationData.Current.LocalSettings.Values.Remove("CurrentUserWebAccountProviderId");
ApplicationData.Current.LocalSettings.Values.Remove("CurrentUserWebAccountId");
await account.SignOutAsync();
}
然后我调用以下命令,它成功并让我登录而无需任何交互。
WebTokenRequest wtr = new WebTokenRequest(wap, string.Empty, clientId);
wtrr = await WebAuthenticationCoreManager.RequestTokenAsync(wtr);
如何退出并强制用户重新对应用进行身份验证?
编辑:这是一个更具凝聚力的示例,我登录、注销、实例化所有用于登录的对象,然后再次登录。
// silent login
wtrr = await WebAuthenticationCoreManager.RequestTokenAsync(wtr);
userWebAccount = wtrr.ResponseData.First().WebAccount;
// sign out
await userWebAccount.SignOutAsync();
// use new objects to try again
wap = await WebAuthenticationCoreManager.FindAccountProviderAsync("https://login.microsoft.com", authority);
wtr = new WebTokenRequest(wap, string.Empty, clientId);
wtr.Properties.Add("resource", resource);
// silent login works again, despite having called SignOutAsync().
wtrr = await WebAuthenticationCoreManager.RequestTokenAsync(wtr);