Как сделать недействительным токен Jwt, полученный от объявления azure - PullRequest
0 голосов
/ 07 января 2020

У меня есть 2 приложения: одна весенняя загрузка и другое в angular. В настоящее время я интегрировал свое приложение с azure объявлением и, следовательно, проходил аутентификацию через него. Теперь возникает вопрос: когда пользователь выходит из внешнего приложения, как сделать недействительным токен JWT, предоставленный Azure AD, если токен не просрочен. Поскольку, если кто-то может получить токен, несмотря на то, что пользователь вышел из системы, он может использовать этот токен для извлечения данных из серверной части. Есть идеи как это сделать?

Ответы [ 3 ]

2 голосов
/ 07 января 2020

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

Я думаю, что ответ на вопрос SO Обесценивание JSON Web Tokens лучше всего подытожит ваши варианты :

  1. Удалите токен из клиента
  2. Создайте черный список токенов
  3. Просто сократите время окончания действия токена и часто меняйте его

Я видел вариант 3 как наиболее успешный «в поле».

0 голосов
/ 08 января 2020

Я хотел бы поделиться Azure AD спецификацией c ответа на этот вопрос.

Проблема, которую вы поднимаете здесь, одинакова для всех Azure AD токенов. Сюда входят приложения сторонних производителей от Microsoft (SharePoint, Word, Teams, Outlook). Срок действия токена по умолчанию составляет 60 минут для токенов доступа и 90 дней для refre sh токенов. Тогда у вас есть другие факторы, такие как MaxInactiveTime, MaxSessionAge et c, которые влияют на время жизни токена refre sh.

Microsoft поигралась с идеей настраиваемых времен жизни токенов (см. https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-configurable-token-lifetimes) но это вызвало проблемы, поэтому они отказались от использования политик условного доступа, где владелец арендатора Azure AD может указать частоту входа уровня арендатора). Однако обратите внимание, что это относится только к refre sh токенам.

Токен доступа жестко установлен на 60-минутное окно, по истечении которого он истекает. Разработчик приложения несет ответственность за обеспечение безопасности токена доступа. Лучше всего всегда иметь его в памяти и никогда не записывать в постоянное хранилище и не показывать его по URL, где он может быть зарегистрирован.

0 голосов
/ 07 января 2020

Насколько я знаю, нет способа аннулировать токен Id / токен доступа после его выдачи. Вы можете сделать недействительными токены refre sh: https://docs.microsoft.com/en-us/graph/api/user-revokesigninsessions?view=graph-rest-1.0&tabs=http. Это не относится к внешнему SPA, хотя.

...