В чем разница между использованием токена обновления и тихой аутентификацией для SPA?

Насколько я понимаю, вы не должны выпускать токен обновления для SPA. Но есть варианты получения нового токена доступа, например, тихая аутентификация.

Чтобы упростить задачу, вы предоставляете токен обновления серверу авторизации (AS) и получаете новый токен доступа. При тихой аутентификации вы передаете текущий токен доступа какой-либо конечной точке в AS, и если он действителен, вы получаете новый токен доступа.

Пожалуйста, поправьте меня, потому что я не понимаю, почему тихая аутентификация является более безопасным подходом.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
10
0
6 935
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

With silent authentication you pass current access token to some endpoint on the AS and if it is valid you get a new access token.

Это не так.

Поток с тихой аутентификацией выглядит так:

Сервер аутентификации (AS) и клиент (SPA)

  • SPA перенаправляет пользователя для входа в систему с AS.
  • AS выполняет вход пользователя в систему и перенаправляет обратно в SPA с токеном доступа, который можно использовать для доступа к API.
  • SPA вызывает API, пока не получит 401. (или использует какой-либо другой механизм для определения времени для получения нового токена доступа)
  • SPA выполняет тихий GET в AS Конечная точка authorize пытается получить новый токен доступа. Это не необходимо предоставить старый просроченный токен доступа.
  • У пользователя IF AND ONLY все еще есть действительный сеанс с AS (вероятно, какой-то файл cookie аутентификации), тогда AS будет ответить действительным токеном доступа (если AS считает, что запрос действительный).

Хороший статья, объясняющий тихую аутентификацию

Почему предпочтительнее использовать cookie аутентификации и токен обновления - этот вопрос поясняет это.

@ alex-buny Да, если вы не используете токен обновления, вам нужно использовать файлы cookie. А про аутентификацию нет ничего «молчаливого». На определенном этапе процесса пользователи должны ввести свои учетные данные. Просто, если срок их входа на основе файлов cookie еще не истек, они могут получить новый токен доступа в любое время без нового взаимодействия. Как указано в ссылке, вы действительно говорите о Неявный поток OIDC. Время жизни сеанса контролируется сервером входа в систему, который предоставил вам файлы cookie.

Charlie Reitzel 18.01.2020 00:00

Разница здесь по сравнению с неявным потоком заключается в том, что при тихой аутентификации вы должны использовать поток кода авторизации. При менее удобном для пользователя подходе, если вам нужен новый токен доступа, вы будете перенаправлены в AS, а затем сразу же вернетесь с ответом на предоставление кода авторизации. Когда ваш клиент получит это, он произведет обмен токена. Теперь, чтобы решить эту проблему UX, вам нужно проделать некоторые уловки и нестандартные вещи, например, загрузить конечную точку аутентификации сервера AS в iframe и использовать API обмена сообщениями HTML 5 для отправки кода авторизации клиенту.

Seer 14.05.2020 14:02

@ alex-buyny, если у пользователя все еще есть действующий сеанс с AS, как AS генерирует новый токен доступа, использует ли он refresh_token, хранящийся внутри сеанса AS?

riscarrott 06.05.2021 16:46

Другие вопросы по теме

Похожие вопросы

Доступ к IBM MQ 8 с помощью JMS с пользователем, но без пароля
Как использовать Pundit, чтобы разрешить администраторам просматривать веб-страницу отложенных вакансий?
Как я могу определить, как URL-адрес будет отображаться в браузере?
Фатальный: ошибка аутентификации для repo_b при выполнении мастера git fetch repo_b (в настоящее время на мастере repo_a, который разветвляется из repo_b)
Ошибка отображается при передаче параметров navparams от одного компонента к компоненту приложения в приложении Ionic
Обработка 401 (неавторизованной) аутентификации angularjs с использованием JWT
Проверка подлинности Python O365, когда обычная проверка подлинности устарела
Почему пользователь может зарегистрироваться, не задав значение «обязательного атрибута» в AWS Cognito?
При входе в систему выдается ошибка "Неверное имя пользователя или пароль" при входе в систему
Аутентификация в Azure-AD с помощью Cordova