В настоящее время я использую эту библиотеку от Microsoft для интеграции своего приложения с Azure AD:
https://github.com/AzureAD/azure-activedirectory-library-for-js
У моего приложения есть собственная аутентификация пользователя.Приложение хранит только имя пользователя и использует его для сопоставления с именем пользователя из Azure AD.Я использую неявное предоставление OAuth и id_token для входа в систему.
Вот поток аутентификации, который я реализую:
- Пользователь нажимает кнопку «Войти».
- Пользователь перенаправления приложенияна страницу входа в Microsoft.
- Пользователь вводит свое имя пользователя / пароль.
- Страница входа в Microsoft перенаправляет пользователя на страницу обработки входа в Azure в моем приложении.
- Код сервера приложения используетC # проверяет полученный токен, чтобы убедиться, что он получен из Azure AD с примером кода из: https://github.com/Azure-Samples/active-directory-dotnet-webapi-manual-jwt-validation.
- Если токен действителен, проверьте, существует ли имя пользователя из токена в системе.
- Если да, затем пользователь проходит проверку подлинности с помощью токена, сгенерированного из контекста 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.