Токены JWT на. NET на основе Active Directory - PullRequest
0 голосов
/ 06 мая 2020

Active Directory и проверка подлинности в целом - это не та область, в которой я считаю себя экспертом. К сожалению, на меня возложена задача по обслуживанию большого серверного приложения. NET, и у моего клиента есть вопрос, на который я должен ответить.

Приложение. NET использует Active Directory для аутентификации учетных записей. После первоначального входа в систему он генерирует токен JWT с помощью JwtSecurityTokenHandler. Я могу сказать, что время жизни токена установлено на 60 дней, и я могу видеть, где последующие запросы декодируют входящие токены для проверки запросов.

Мой клиент задает вопрос: что происходит если они удаляют пользователя из Active Directory, пока у этого пользователя есть действующий токен JWT? Будет ли токен продолжать работать, пока не истечет 60 дней с даты его создания, или он перестанет работать немедленно?

Мое смутное понимание механизма JWT предполагает, что сервер просто проверяет, правильно ли подписан токен и не истекло при каждом запросе. Я не думаю, что он повторно проверяет личность по Active Directory с каждым запросом. По крайней мере, я не верю, что взаимодействие с Active Directory является частью JwtSecurityTokenHandler; если бы мы это делали, это должно было бы произойти после проверки токена. Это правильно?

Как с этим справляется большинство приложений - разумно ли проверять каждый входящий запрос на AD, чтобы убедиться, что учетная запись все еще действительна, или это приведет к слишком большим накладным расходам?

Спасибо, Фрэнк

1 Ответ

0 голосов
/ 06 мая 2020

JWT - это автономный токен доступа. После выдачи вы не можете отозвать его, пока не истечет срок его действия. Да, вы сможете получить доступ к авторизованным ресурсам с выданным токеном доступа JWT даже после удаления пользователя из Active Directory до истечения срока его действия. Чтобы решить эту проблему, токен refre sh также выдается вместе с JWT в процессе аутентификации. Токен refre sh можно отозвать в любой момент. Таким образом, если пользователь удален из Active Directory, токен refre sh будет аннулирован.

Рекомендуется установить срок действия токена доступа на более короткий период времени и обновить его sh после истекает (это делается незаметно). При обновлении токена будет отправлена ​​пара токенов access / refre sh для получения новой пары доступа / токена.

Refre sh токен проверяется каждый раз, когда он используется. Следовательно, к тому времени, когда он запрашивает новый токен, если пользователь был удален из активного каталога, токен refre sh будет недействительным и не сможет получить новую пару токенов. В результате пользователь выйдет из системы.

Что я предлагаю при прохождении вашего сценария, так это сократить время истечения срока действия токена до более короткого периода времени, например, 30-60 минут. Это не сильно повлияет на производительность вашего приложения.

Ссылка для получения более подробной информации о токенах

...