Наше приложение 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);