Обновите токен автоматически и добавьте новые группы безопасности пользователя Azure AD. - PullRequest
4 голосов
/ 10 апреля 2019

У меня есть простое веб-приложение ASP.Net, использующее Azure AD с проверкой подлинности на основе ролей / утверждений / авторизацией.В основном приложение проверяет IsinRole () для пользователя, а затем в зависимости от того, что возвращается, он получает доступ к области веб-приложения.Мы используем ГРУППЫ БЕЗОПАСНОСТИ в Azure AD.Сценарий здесь: пользователь принадлежит к Group1, и после входа в веб-приложение он получает доступ к области Group1, теперь администратор на бэкэнде добавляет пользователя в Group2, и мы хотим, чтобы пользователь не выходил из системы и не возвращался обратно на портале.мы хотим, чтобы его токен также содержал эту недавно добавленную группу Group2.Есть ли способ обновить токен, чтобы добавить дополнительную группу group2 для токена этого пользователя без его выхода из системы и в приложении?

Есть ли способ принудительно обновить токен новой информацией?

ОценитьВаша помощь.

Спасибо.

1 Ответ

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

Обновить токен, чтобы получить новый токен доступа

Одним из подходов может быть использование Refresh Token для приобретения нового Access Token, если вы используете грант, подобный предоставлению кода авторизации, в своем веб-приложении.

Подробнее об этом можно прочитать здесь - Обновление токенов доступа

Ваше приложение должно будет решить, когда приобретать новый токен доступа ... поэтому оно может сделать это, когда узнает, что членство в группе было обновлено внутренним компонентом / администратором.

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

На что обратить внимание:

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

  • Жетоны обновления должны храниться надежно

  • В частности, в случае groups претензий могут быть сценарии с избыточным количеством ресурсов, когда один токен доступа может не помочь.


Альтернативный подход (вместо попытки принудительно обновить токен новой информацией, как вы упомянули)

Если groups заявка - то, что вам нужно, тогда используйте Microsoft Graph API, чтобы получить информацию о группах безопасности, к которой принадлежит пользователь, вместо того, чтобы смотреть только на токен доступа.

Код вашего приложения может снова вызвать Microsoft Graph API в любой момент, чтобы получить новые данные о членстве, т.е. группу 1 и группу 2 в соответствии с вашим примером (когда известно, что членство в группе было обновлено внутренним компонентом / администратором). SignalR или другой способ уведомить ваше приложение о таких изменениях также будет уместен здесь.

Соответствующие API Microsoft Graph

Преимущества

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

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

подробности сценария превышения для groups заявки в маркере доступа

В настоящее время вы, возможно, отредактировали манифест своего приложения и задали для свойства "groupMembershipClaims" значение "All" или "SecurityGroup", чтобы токен доступа получил groups утверждение со всеми идентификаторами групп, к которым принадлежит пользователь

enter image description here

Чтобы убедиться, что размер токена не превышает ограничения размера заголовка HTTP, Azure AD ограничивает число идентификаторов объектов, включаемых в группы, в утверждении . Если пользователь является участником большего числа групп, чем предел превышения (150 для токенов SAML, 200 для токенов JWT), то Azure AD не отправляет утверждение группы в токене. Вместо этого он включает избыточное требование в токене, указывающее приложению запросить Graph API для получения членства в группе пользователя.

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