Интеграция приложений с Azure Active Directory: повторно проверьте Id_token, чтобы проверить, не вышел ли пользователь из системы. - PullRequest
0 голосов
/ 11 июня 2018

В настоящее время я использую эту библиотеку от Microsoft для интеграции своего приложения с Azure AD:

https://github.com/AzureAD/azure-activedirectory-library-for-js

У моего приложения есть собственная аутентификация пользователя.Приложение хранит только имя пользователя и использует его для сопоставления с именем пользователя из Azure AD.Я использую неявное предоставление OAuth и id_token для входа в систему.

Вот поток аутентификации, который я реализую:

  1. Пользователь нажимает кнопку «Войти».
  2. Пользователь перенаправления приложенияна страницу входа в Microsoft.
  3. Пользователь вводит свое имя пользователя / пароль.
  4. Страница входа в Microsoft перенаправляет пользователя на страницу обработки входа в Azure в моем приложении.
  5. Код сервера приложения используетC # проверяет полученный токен, чтобы убедиться, что он получен из Azure AD с примером кода из: https://github.com/Azure-Samples/active-directory-dotnet-webapi-manual-jwt-validation.
  6. Если токен действителен, проверьте, существует ли имя пользователя из токена в системе.
  7. Если да, затем пользователь проходит проверку подлинности с помощью токена, сгенерированного из контекста OWIN моего приложения.

Проблема :

Библиотека на шаге 5 выше может проверить, только еслитокен действителен с клиентом Azure, идентификатором клиента и сроком его действия.Для этого не требуется сетевой доступ к этому.

Это означает, что даже если пользователь уже вышел из системы с помощью URL-адреса выхода из Microsoft: https://login.microsoftonline.com/tenant-id/oauth2/logout?post_logout_redirect_uri=uri, id_token из Azure по-прежнему действителен.

У меня вопрос :

Есть ли способ проверить, вышел ли пользователь из Azure AD, затем сделать недействительным id_token и потребовать ли от пользователя повторный вход?

Обновление :

Я использую id_token, потому что мне просто требуется, чтобы у пользователя была действительная учетная запись в Azure AD, и мне не нужно больше связываться с Azure AD.

1 Ответ

0 голосов
/ 13 июля 2018

ID токены считаются действительными до истечения срока их действия.Обычно веб-приложение сопоставляет время жизни сеанса пользователя в приложении со временем жизни токена ID, выданного пользователю.Вы можете настроить время жизни идентификатора токена, чтобы контролировать, как часто веб-приложение истекает через сеанс приложения, и как часто требуется повторная аутентификация пользователя с помощью Azure AD (в автоматическом или интерактивном режиме).

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

Чтобы создать политику, выполните следующую команду:

PowerShell

New-AzureADPolicy -Definition @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"02:00:00","MaxAgeSessionSingleFactor":"02:00:00"}}') -DisplayName "WebPolicyScenario" -IsOrganizationDefault $false -Type "TokenLifetimePolicy"

Ссылка: Настраиваемое время жизни токена в Azure Active Directory

...