Приложение MS Identity Azure зарегистрировано, но отправляет unauthorized_client в неявном потоке - PullRequest
2 голосов
/ 09 июля 2019

Я зарегистрировал приложение в Azure для платформы Microsoft Identity.Я настроил его для разрешения учетных записей MS (например, outlook.com) и в основном сделал все за несколько быстрых стартов онлайн здесь и здесь (кроме «добавления учетных данных в ваше веб-приложение»«).Я также установил флажки, которые включают неявный поток.

Я перенаправляю свое приложение React на URL для входа (используя неявный поток), я получаю, чтобы ввести свое имя пользователя, но затем я вижу

unauthorized_client: клиент не существует или не включен для потребителей.Если вы являетесь разработчиком приложения, настройте новое приложение через регистрации приложений на портале Azure по адресу https://go.microsoft.com/fwlink/?linkid=2083908

Как я уже упоминал выше, я прошел несколько быстрых запусков и прочитал о неявном потоке здесь и следовали их примерам для моего кода.

Я также попытался просто удалить регистрацию приложения и начать заново.Не повезло.

JS-код пытается реализовать неявный поток

JS-код, который перенаправляет браузер на URL, который выглядит как первый пример Microsoft на их странице неявного потока

goSignIn() {
    const tenant = 'common'; // (for us with MS accounts)
    const clientId = '*****';
    const redir = encodeURIComponent('http://localhost:3000/signin');
    const nonce = Math.round(Math.random() * 10000, 0);
    const uriTemplate = 'https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?client_id={clientId}&response_type=id_token+token&redirect_uri={redirect}&scope=openid&response_mode=fragment&state={state}&nonce={nonce}';
    const filledTemplate = uriTemplate
      .replace('{tenant}', tenant)
      .replace('{clientId', clientId)
      .replace('{redirect}', redir)
      .replace('{nonce}', nonce)
      .replace('{state}', nonce);
    console.log(filledTemplate);
    window.location = filledTemplate;
  }

Конфигурация приложения в Azure:

Azure -> Идентификация -> Регистрация приложений -> MyApp -> Аутентификация

  • URI перенаправления: http://localhost:3000/signin(Приложение React работает на 3000, и у меня настроен маршрут для / входа)
  • Не используются никакие предлагаемые перенаправления.
  • Установлены неявные флажки для идентификатора токена и токена доступа
  • LiveПоддержка SDK включена
  • Для поддерживаемых типов учетных записей установлено значение «Учетные записи в любом каталоге организации и личные учетные записи Microsoft (например, Skype, Xbox, Outlook.com)» *

Azure -> Identity -> Регистрация приложений -> MyApp -> Права доступа API

  • MS Graph
    • User.Read
    • Email
    • Профиль
    • openid

Из документов, которые я прочитал, я думал Я сделал достаточно для идентификатора.Я не уверен, что нужно сделать, чтобы заставить его работать.

1 Ответ

0 голосов
/ 10 июля 2019

Кажется, вы сделали достаточно, чтобы получить токен.Я проверил это на моей стороне, это работает хорошо.Здесь я предоставлю вам мой скриншот для повторной проверки.

enter image description here

enter image description here

Также, вот мой рабочий URL-адрес запроса, вы можете войти с помощью msa, чтобы пройти тест.

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=5fd66168-7ba3-4bbc-a155-bff662eed9f7
&response_type=id_token+token
&redirect_uri=http://localhost:3000/signin
&scope=openid
&response_mode=fragment
&state=12345
&nonce=678910
...