Я довольно зеленый, когда дело доходит до программирования, поэтому, пожалуйста, простите меня заранее.
Приложение, которое я пишу, - JavaScript UWP для Windows.Я пытаюсь использовать Azure AD для аутентификации пользователя и для этого использую брокер веб-аутентификации.
Когда я запускаю приложение, оно в основном выполняет то, что я хочу.Он запрашивает у пользователя регистрацию в Azure AD, если пользователь не предоставил разрешения для приложения, они запрашиваются и все в порядке.Проблема в том, что всплывающее окно Web Authentication Broker никогда не исчезает.Он остается на экране, как будто чего-то ждет.
У меня такое ощущение, что это связано с URI обратного вызова и он не получает ожидаемого ответа.Я читал различные статьи Microsoft, проекты GitHub и потоки Stack Overflow, которые, похоже, не согласны с тем, каким должен быть URI обратного вызова.
Должен ли это быть общий URL https://login.microsoftonline.com/common/oauth2/nativeclient,, должен ли это быть ms-appx-web: //Microsoft.AAD.BrokerPlugin/APPID, или это должен быть ms-appx: // APPID?
Приложение, которое я пишу, основано на образце GitHub https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/WebAuthenticationBroker/js.
Я включил журнал событий WebAuth и вижу зарегистрированное событие с кодом 1011 Навигация завершена, что показывает, чтоlogin.microsoftonline.com ответил токеном доступа, однако приложение UWP этого не видит.
ОБНОВЛЕНО: Код и изображение добавлены ниже.
<!-- language: lang-js -->
var aadTenantId = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
var aadClientId = 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyy'
var microsoftGraphScopes = [
"email",
"openid",
"offline_access",
"Calendars.Read"
]
microsoftGraphScopes = microsoftGraphScopes.join('%20');
var redirectURL = 'https://login.microsoftonline.com/common/oauth2/nativeclient';
var redirectURLEncoded = encodeURIComponent(redirectURL);
var aadEndpointURL = 'https://login.microsoftonline.com/' + aadTenantId + '/oauth2/v2.0/authorize?client_id=' + aadClientId + '&redirect_uri=' + redirectURLEncoded + '&scope=' + microsoftGraphScopes + '&response_type=token';
var webAuthenticationBroker = Windows.Security.Authentication.Web.WebAuthenticationBroker;
var webAuthenticationOptions = Windows.Security.Authentication.Web.WebAuthenticationOptions;
var webAuthenticationStatus = Windows.Security.Authentication.Web.WebAuthenticationStatus;
var aadEndpointURI = new Windows.Foundation.Uri(aadEndpointURL);
var redirectURI = new Windows.Foundation.Uri(redirectURL);
webAuthenticationBroker.authenticateAsync(webAuthenticationOptions.none, aadEndpointURI, redirectURI)
![Connecting to a service white screen and hung](https://i.stack.imgur.com/CjBW7.png)