Пользователю предлагается дать согласие на использование приложения при каждом входе в систему - Azure AD v2.0 - PullRequest
0 голосов
/ 29 марта 2019

У меня есть собственное приложение (Electron), в которое я интегрировал Azure AD v2.0. На данный момент мы включили только вход на основе учетной записи Microsoft.

Вот мой URL входа выглядит так:

const url = `https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize?client_id=<my-application-id>&response_type=id_token&redirect_uri=${encodeURIComponent('urn:ietf:wg:oauth:2.0:oob')}&scope=openid%20profile%20email&response_mode=fragment&nonce=<some-random-value&state=<some-random-value>`;

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

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

Мне интересно, почему это происходит. Я даже пытался добавить prompt=login к URL, но это не имеет никакого эффекта.

Есть ли другая настройка, которую мне нужно сделать? Я посмотрел как старый портал (портал регистрации приложений Microsoft), так и новый портал (регистрация приложений (предварительный просмотр) в портале Azure), но не смог найти параметр, который отключит запрос согласия при каждом входе.

1 Ответ

1 голос
/ 02 апреля 2019

Поведение, которое вы видите, связано с тем, что вы используете ответный URL со схемой, отличной от «http» или «https» («urn», в вашем случае). В этой ситуации учетные записи Microsoft попросят пользователя подтвердить делегированные разрешения, запрашиваемые приложением, даже если эти разрешения были предоставлены ранее. Эта дополнительная подсказка помогает убедиться, что пользователи знают, какое приложение приложение идентифицирует как.

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

Если вы присмотритесь очень внимательно, вы заметите небольшую разницу между запросом на первоначальное согласие ("... вам нужно разрешение ...") и запросом на последующее подтверждение (". .. нужно, чтобы ты подтвердил свое разрешение на ... ").

Initial consent prompt Subsequent consent prompt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...