Я пытаюсь авторизовать мое многопользовательское веб-приложение saas для связи с учетной записью Office 365. Ну, очевидно, моему приложению нужно согласие администратора из-за разрешений, поэтому я должен реализовать это.
Но я также хотел бы, чтобы пользователь также дал согласие, чтобы он мог зайти в свой аккаунт и нажать «Авторизовать» после того, как администратор согласился.
Как мне это реализовать? Уже есть поток авторизации, но он просто авторизует каждого пользователя (идея согласия администратора была в то время совершенно неизвестна). Когда не администратор пытается авторизовать свою учетную запись, он получает сообщение об ошибке «Эта операция может выполняться только администратором». Когда администратор проходит через это, он авторизует их, а когда администратор получает согласие администратора, он все равно просто авторизует их. Обычный пользователь все еще получает эту ошибку.
Вот разрешения, которые запрашивает мое приложение:
Вот данные, которые мы храним для этого:
user_id
access_token
expires_on
resource
refresh_token
scope
id_token
Это также не помогает, что я только в основном знаком с oauth 2.0.
Я пролистывал статьи, вопросы форума, справочные руководства и документацию уже пару недель. Помогите.
ОБНОВЛЕНИЕ: Итак, я думаю, что, возможно, мне нужно добавить флаг is_admin к моим данным? Поэтому, когда администратор соглашается, я сохраняю все вышеперечисленные поля вместе с is_admin => 1
, Поэтому, когда обычный пользователь отправляется в офис согласия 365, мое приложение проверит, имеет ли его учетная запись токен доступа oauth с is_admin
Это означает, что он был авторизован администратором учетной записи, и я могу приступить к их авторизации.
Я греюсь?
Вход в URL:
https://login.microsoftonline.com/common/oauth2/authorize?
response_type=code
&client_id={my_client_id}
&redirect_uri=https%3A%2F%2Fapp.example.com%2Fintegrations%2Foffice-auth&state=V6diTW2TaHl1Zpawg1AFub7fWtKfGnyl1464023103
&resource=https%3A%2F%2Foutlook.office365.com%2F
&prompt=consent
Починил это. Это были разрешения приложения в Azure (в отличие от делегированных разрешений). Он имел «Чтение и запись всех почтовых ящиков», среди нескольких других, которые по сути давали разрешения на доступ ко всем пользователям в организации.
Удаление этого, авторизация пользователя работает, и мне даже не нужно согласие администратора.
Других решений пока нет …