Я следую этой статье для отзыва доступа пользователя:
Теперь рассмотрим после проверки пользователя, что я выпустил accesstoken с 30-минутной продолжительностью жизни, как показано в предыдущей статье, и с токеном обновления как 1 день, но что, если администратор удалит этого пользователя за 10 минут с 20 минутами, оставшимися сейчас, теперь в этом случае Мне нужно отменить доступ к этому пользователю.
Для этого мне нужно удалить эту запись пользователя из обновленной таблицы токенов, чтобы запретить дальнейший запрос доступа к токену, но поскольку время истечения срока действия для доступа еще не достигло 20 минут, чтобы пользователь мог получить доступ к защищенному ресурсу, который является полностью неправильным.
Поэтому я решил реализовать механизм кэширования, чтобы кэшировать токен доступа на сервере, а также сохранить в базе данных. Поэтому, когда этот пользователь отменяется, я могу просто удалить эту запись пользователя из кеша и базы данных, чтобы остановить доступ этого пользователя к защищенному ресурсу.
Но в приведенных ниже ответах говорится, что это не так, как был разработан oauth2:
Отменить токен доступа OAuthBearerAuthentication
OAuth2 - ненужная сложность с токеном обновления
Итак, мой вопрос:
1) Почему кеширование маркера доступа не считается лучше, чем обновление механизма токена, а также плохой подход?
Мой второй вопрос основан на этом ниже ответе, указанном @Hans Z., в котором он говорит, что:
Это обязательно будет связано с сервером ресурсов (RS), который консультирует Сервер авторизации (AS), который представляет собой огромные накладные расходы.
2) В случае отзыва доступа для пользователя, почему RS будет обращаться к AS, поскольку AS предназначена только для аутентификации пользователя и создания токена доступа в соответствии с этим Article?
3) В статье есть только 2 проекта:
- Authentication.api. Аутентификация пользователя и создание токена доступа.
-
Сервер ресурсов - проверка accesstoken с помощью атрибута
[Authorize]
В приведенном выше случае, который является сервером авторизации?
Обновление: Я решил использовать токен обновления, чтобы аннулировать доступ пользователя в случае удаления пользователя, а также при выходе пользователя из системы я обновляю токен из обновленной таблицы токенов из-за вашего требования, что мы хотим выйти из системы немедленно, как только пользователь нажмет на выход.
Но здесь проблема У меня есть 250 ролей, связанных с пользователем, поэтому, если я ставлю роли в accesstoken, тогда размер accesstoken будет таким огромным, и мы не сможем передать такой огромный accesstoken из заголовка, но я не могу запросить роли для проверки доступа пользователей к конечным точкам каждый раз при вызове конечной точки.
Итак, это еще одна проблема, с которой я сталкиваюсь.