Как реализовать согласие администратора и пользователя для API Office365

Я пытаюсь авторизовать мое многопользовательское веб-приложение saas для связи с учетной записью Office 365. Ну, очевидно, моему приложению нужно согласие администратора из-за разрешений, поэтому я должен реализовать это.

Но я также хотел бы, чтобы пользователь также дал согласие, чтобы он мог зайти в свой аккаунт и нажать «Авторизовать» после того, как администратор согласился.

Как мне это реализовать? Уже есть поток авторизации, но он просто авторизует каждого пользователя (идея согласия администратора была в то время совершенно неизвестна). Когда не администратор пытается авторизовать свою учетную запись, он получает сообщение об ошибке «Эта операция может выполняться только администратором». Когда администратор проходит через это, он авторизует их, а когда администратор получает согласие администратора, он все равно просто авторизует их. Обычный пользователь все еще получает эту ошибку.

Вот разрешения, которые запрашивает мое приложение:

  • Calendars.Read
  • Calendars.ReadWrite
  • Contacts.ReadWrite
  • Mail.ReadWrite
  • Mail.Send
  • Tasks.ReadWrite

Вот данные, которые мы храним для этого:

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

1

Решение

Починил это. Это были разрешения приложения в Azure (в отличие от делегированных разрешений). Он имел «Чтение и запись всех почтовых ящиков», среди нескольких других, которые по сути давали разрешения на доступ ко всем пользователям в организации.

Удаление этого, авторизация пользователя работает, и мне даже не нужно согласие администратора.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]