2016-01-13 2 views
15

Я пытаюсь правильно выполнить рабочий процесс OAuth2 для Azure AD. Я следую инструкциям из этого источника: https://msdn.microsoft.com/en-us/library/azure/dn645542.aspxOAuth2 с Azure AD - Не получить согласие пользователя

Я могу успешно получить ответ кода авторизации с помощью этого запроса: https://login.microsoftonline.com/[app-endpoint-id]/oauth2/authorize?response_type=code&client_id=[client-id]&redirect_uri=[redirect-uri]

Я затем использовать код авторизации, чтобы запросить маркер доступа с HTTP POST, как так (Я не имею тестирования это с помощью почтальона):

POST/[приложение-конечная точка-идентификатор]/oauth2/маркер HTTP/1.1 Ведущий: login.microsoftonline.com Cache-Control: нет-кэша Почтальон-токена: ed098281-9aa4-6e5f-915d-0253d9a876d3 Тип контента: применение на/х-WWW-форм-urlencoded

grant_type = authorization_code & client_id = [клиент-идентификатор] & код = [authorization_code] & redirect_uri = [redirect_uri] & client_secret = [клиент-секрет] & ресурс = [app- URL]

Я получаю следующее сообщение об ошибке из запроса POST: { «ошибка»: «invalid_grant», «error_description»: "AADSTS65001: пользователь или администратор не согласился использовать приложение с идентификатором«app- Я бы'. Отправить запрос интерактивной авторизации для этого пользователя и ресурса. \ R \ nTrace ID: trace-di \ r \ nКорреляция ID: корреляция-id \ r \ nТимостама: 2016-01-13 17: 18: 39Z "," error_codes ": [65001], «timestamp»: «2016-01-13 17: 18: 39Z», «trace_id»: «trace-id», «relation_id»: «корреляция-id»}

Если я очищаю свой кеш и сделайте первый запрос для авторизационного кода, я буду перенаправлен на вход в систему. Однако я не получаю никакого права разрешать свое приложение после входа в систему, как будто я должен в этой документации:

// azure. microsoft.com/en-us/documentation/articles/active-directory-integrating-applications/

Что я здесь делаю неправильно? Я пытаюсь получить токен доступа.

+0

Что конкретно вы пытаетесь сделать? т.е. пытаетесь ли вы использовать приложение WebAPI, работающее с AAD или мобильным приложением, на каком языке? – theadriangreen

+0

Я пытаюсь получить приложение WebAPI, работающее с AAD в Java. – Spensaur

+0

У меня такая же проблема, но я использую PHP. –

ответ

9

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

Согласие двухступенчатый процесс:

1) Во-первых, администратор арендатора должен одобрить приложение. Это можно сделать либо: 1) на портале Azure арендатора, желающего использовать приложение, или 2), запустив приложение и используя учетные данные администратора для приложения при входе в систему.

Пример утверждения портала Azure:

2) Во-вторых, любой дополнительный пользователь (не администратор) будет назначен согласие на их индивидуальную информацию при использовании приложения в первый раз после того, как администратор согласился, что приложение может быть использовано.

+0

Спасибо! По какой-то причине у меня создалось впечатление, что я администратор, потому что я создал приложения, но ваш пост заставило меня понять, что я не был. На самом деле я уже дал делегированные разрешения на портале Azure приложения арендатора, прежде чем я разместил здесь свой вопрос, который также заставил меня поверить, что у меня есть права администратора. – Spensaur

+3

Обновление - мне удалось войти в систему с учетной записью администратора, и мне было предложено дать согласие. Впоследствии я получил токен доступа. С той же учетной записью администратора я проверил разрешения на портале Azure и убедился, что у арендатора есть разрешение, и так оно и было. Но я все равно сталкиваюсь с той же ошибкой при попытке получить токен доступа с пользователем, не являющимся администратором. У меня есть пользовательское назначение, которое должно быть установлено no. Но я все же назначил свою учетную запись. Нужно ли мне делать что-нибудь особенное, чтобы получить запрос о полномочиях для пользователя без администратора после входа в систему? – Spensaur

+0

Когда я пытаюсь использовать другую учетную запись, отличную от admin, которая не является моей. Я получаю следующее сообщение: Извините, но у нас возникли проблемы с подписанием вами. Мы получили плохую просьбу. Дополнительная техническая информация: AADSTS90093: Эта операция может выполняться только администратором. Выйдите из системы и войдите в систему как администратор или обратитесь к одному из администраторов вашей организации. – Spensaur

2

Попробуйте предоставить ресурс как 'https://graph.windows.net' в почтовом запросе.

Это сработало для меня.

+1

Это работает. Обратите внимание, что для защищенного API потребуется разрешенная аудитория, настроенная для включения graph.windows.net в соответствии с https://stackoverflow.com/questions/44466189/oauth2-resource-owner-password-grant-via-api/44539932#44539932 – Sentinel

Смежные вопросы