У нас есть веб-сайт (построенный на основе php), где мы предоставляем интерактивные образовательные инструменты для преподавателей / студентов. Мы осуществили интеграцию OAuth с google.com, где пользователи могут «зарегистрироваться» и «войти» на наш сайт, используя свои учетные записи Google (это может быть личная учетная запись gmail или член домена приложений Google).
Мы пытаемся сделать аналогичную интеграцию с O365, где наш веб-сайт может запросить у O365 адрес электронной почты и имя / фамилию пользователя, чтобы мы могли создать для него учетную запись на нашем сайте, и как только учетная запись будет создана, войдите в нее. Мы создали список приложений в Azure -> Active Directory, сгенерировавший идентификатор клиента и его секрет, а также подключивший их к коду PHP. Рабочий процесс OAuth описано здесь работает до момента, когда я пытаюсь запросить токен доступа, используя запрос POST для https://login.windows.net/common/oauth2/token. Перенаправляет обратно на мой redirect_uri
но вместо того, чтобы дать мне код авторизации, он дает мне эти параметры в URL:
[error] => access_denied
[error_description] => AADSTS65005: The client application has requested access to resource 'https://outlook.office365.com/'. This request has failed because the client has not specified this resource in its requiredResourceAccess list.
Trace ID: xxxxxx
Correlation ID: xxxxxx
Timestamp: 2014-09-29 06:28:25Z
[state] => xxxxxx
Все, что мне нужно, это чтобы O365 сообщал мне электронную почту и имена пользователей. Конечно, есть быстрое решение для этого, что я пропускаю?
По умолчанию зарегистрированное приложение настроено на запрос «Чтение профиля пользователя», которое, как только пользователь согласился, позволяет приложению получать токен пользователя (идентификатор токена при использовании OpenID Connect) и считывать профиль пользователя, вошедшего в систему (включая их почтовый адрес или адреса) при вызове API Azure AD Graph. Приложения, защищенные Azure AD, должны в настоящее время настраивать области разрешений, которые им требуются заранее (как часть процесса регистрации приложений, в разделе «Разрешения для других приложений»).
Похоже, что здесь вы указали Outlook.com в качестве ресурса, для которого требуется код и токен доступа, но ваше приложение не настроено для доступа к O365 Outlook.com/Exchange Online.
Пожалуйста, попробуйте настроить ресурс в вашем запросе на Azure AD — https://graph.windows.net/. Тот должен работать на тебя. Затем можно поменять код токена доступа для вызова API-интерфейса Azure AD Graph.
Надеюсь это поможет
Других решений пока нет …