Приложение MS Identity Azure зарегистрировано, но отправляет unauthorized_client в неявном потоке

Я зарегистрировал приложение в 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, и у меня настроен маршрут для /signin)
  • Не использовать какие-либо предлагаемые перенаправления.
  • Установлены неявные флажки для идентификатора токена и токена доступа
  • Поддержка Live SDK включена
  • Для поддерживаемых типов учетных записей установлено значение "Учетные записи в любом каталоге организации и личные учетные записи Microsoft (например, Skype, Xbox, Outlook.com)".

Azure -> личность -> регистрации приложений -> MyApp -> разрешения API

  • MS Graph
    • User.Read
    • Электронное письмо
    • Профиль
    • OpenID

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

2 ответа

Решение

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

https://i.s tack.imgur.com/yWA0w.png

https://i.s tack.imgur.com/xiYED.png

Кроме того, вот мой рабочий 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

Я столкнулся с такой проблемой. Ошибка, которую я совершил, связана с идентификатором приложения: когда вы создаете секрет клиента, пользовательский интерфейс Azure представляет секрет и идентификатор секрета. Этот секретный идентификатор не тот, который следует использовать в конфигурации вашего приложения. Вместо этого вам нужен идентификатор приложения, который можно найти на странице «Обзор».

Я предполагаю, что есть много проблем с конфигурацией, которые могут вызвать это сообщение об ошибке. В общем: обратите внимание на App ID, если ошибка в том, что приложение не найдено.

Другие вопросы по тегам