Приложение 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, если ошибка в том, что приложение не найдено.