Я внедряю SSO для наших систем, чтобы централизовать аутентификацию и авторизацию пользователей, в которой у нас будет SSO-сервер (User and Session Manager), где пользователь входит в систему, используя свои учетные данные, а затем сможетдля доступа ко всем другим связанным системам.
Реализация единого входа:
- Сначала пользователь получит сеанс (токен доступа + токен обновления), и они будут сохранены на стороне клиента.,
- Если он перенаправит на другие системы, SSO-сервер для этой системы сгенерирует (токен одноразового использования)
- И при загрузке системы (токен одноразового использования) будет заменен напара токенов доступа и токенов обновления, и они будут храниться на стороне клиента этой конкретной системы
- . И при каждом запросе сервера сеанс (токен доступа + токен обновления) будет отправляться через заголовок запроса, так чтосервер системы может запросить авторизацию этого пользователя у сервера единого входа.
Срок действия токена доступа меньше, чем токена обновления, и он не хранится на сервере единого входа, и только его подпись проверяется для авторизации, но токен обновлениясохранены, чтобы мы могли отозвать его позже, если это необходимо.(Из-за огромного количества запросов на авторизацию, которые мы получим позже, я не хотел сохранять токен доступа.)
Проблема в том, что если пользователь хочет выйти из системы, все его / ее токены доступа должны бытьсрок действия истек, но они не хранятся в базе данных и только на стороне клиента для каждой системы, и я могу только отозвать токен обновления, чтобы токен действовал до истечения времени его истечения и до тех пор, пока он не может быть использован, а это означает, что пользователь все еще входит в систему.
Я использую JWT для генерации и проверки токенов.
Это мой первый вопрос здесь, я надеюсь, что я правильно объяснил проблему.И я буду ждать ваших добрых ответов.