Keycloak Тихая аутентификация

У меня есть приложение для реагирования, которое использует конечную точку Keycloak token_endpoint для аутентификации пользователя. Проблема, с которой я столкнулся сейчас, заключается в том, как обновить/обновить этот токен. Я знаю, что могу использовать токен обновления, но это плохая практика, поскольку возникает проблема безопасности, когда речь идет о веб-приложении. Мне кажется, что лучшим подходом будет использование Silent Authentication.

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

спасибо

Что заставляет вас думать, что использование токенов обновления связано с проблемой безопасности? Я предлагаю вам поискать ссылки об этом и не доверять своей простой догадке. OAuth является наиболее широко используемым протоколом безопасности в настоящее время, и он очень надежен при использовании его с надлежащим протоколом безопасной передачи в целом.

Xtreme Biker 28.03.2019 20:42

Это не догадка... Существует множество материалов, объясняющих, почему хранить токен обновления в браузере (SPA) — плохая идея. «Токены обновления долговечны. Это означает, что когда клиент получает один с сервера, этот токен должен храниться в безопасном месте, чтобы предотвратить его использование потенциальными злоумышленниками, по этой причине хранить их в браузере небезопасно. .." Подробнее: auth0.com/learn/refresh-токены

Viny Machado 28.03.2019 21:07

Если вы не доверяете маркерам обновления в браузере, используйте адаптер на стороне сервера. Это создаст файл cookie браузера для веб-сеанса, который будет связан с кортежами токенов доступа/обновления на стороне сервера. Тем не менее, имейте в виду, что если кто-то украдет ваш файл cookie и он будет жить долго, он может взломать вашу учетную запись. Если вы не можете доверять своим пользователям в этом, вам следует попытаться свести к минимуму ущерб, который может нанести хакер с украденным токеном/куки. Но, как я уже сказал, большинство сайтов в Интернете полагаются на хранилище браузера для управления своими сеансами.

Xtreme Biker 28.03.2019 22:51
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
4 147
2

Ответы 2

Это будет состоять только из предоставления параметра prompt=none в запросе аутентификации, как указано в спецификации OpenID Connect 1.0 Core: https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest

prompt OPTIONAL.

Space delimited, case sensitive list of ASCII string values that specifies whether the Authorization Server prompts the End-User for reauthentication and consent. The defined values are:

none

The Authorization Server MUST NOT display any authentication or consent user interface pages. An error is returned if an End-User is not already authenticated or the Client does not have pre-configured consent for the requested Claims or does not fulfill other conditions for processing the request. The error code will typically be login_required, interaction_required, or another code defined in Section 3.1.2.6. This can be used as a method to check for existing authentication and/or consent.

Привет Ганс, не уверен, как это будет работать. Сегодня я делаю запрос к localhost:8082/auth/realms/my-realm/protocol/openid-connect/‌​…, чтобы мой пользователь аутентифицировался. Затем я получаю токен, обновляю токен и т. д. Как я могу обновить свой токен на основе этого параметра prompt=none Должен ли я отправить запрос на получение обновленного токена на конечную точку?

Viny Machado 21.03.2019 22:32
  1. Аутентифицируйтесь, чтобы получить access_token с помощью /auth (подсказка=логин).
  2. Просто вызовите ODC /token с помощью grant_type=refresh_token, чтобы обновить токен с помощью access_token. новый ответ включает в себя access_token, refresh_token и так далее.
  3. После этого вы должны обновить их для новых вызовов API.

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