Какой правильный универсальный URI перенаправления OAuth для платформы Windows? - PullRequest
0 голосов
/ 02 октября 2018

Я довольно зеленый, когда дело доходит до программирования, поэтому, пожалуйста, простите меня заранее.

Приложение, которое я пишу, - 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

1 Ответ

0 голосов
/ 17 октября 2018

@ Барри Ванг - MSFT был прав.Перечитав документацию, я обнаружил, что пытался использовать Token Flow, который обходил фазу аутентификации.Похоже, что это действительно только для определенных вариантов использования, поэтому я переключился на Auth Flow, и все это хорошо.

Спасибо, Барри.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...