Spring Keycloak - Как установить принципал из токена доступа JWT - PullRequest
0 голосов
/ 18 февраля 2020

Я занимаюсь этим уже около недели.

У меня есть вариант использования, когда я получаю токен авторизации через тело вместо заголовка, и из-за этого Keycloak и Spring не устанавливают пользователя автоматически. (Причина в том, что с веб-сокетами я могу отправлять токен аутентификации только через тело с начальным соединением)

Я пытался перехватить вызов до нажатия клавиши и скопировать токен из тела в заголовок, но это не сработало.

Так что теперь я хотел бы вручную аутентифицироваться через keycloak (или просто вручную установить основного пользователя). У меня есть доступ к токену доступа JWT, но отсюда я не уверен, как пройти аутентификацию с помощью keycloak.

У кого-нибудь есть ввод?

1 Ответ

0 голосов
/ 18 февраля 2020

Поскольку здесь есть две пьесы Keycloak, я начну с пояснения:

  • Keycloak - это сервер авторизации, который клиент будет использовать использовать для получения JWT
  • Адаптер Keycloak - это то, что настраивает сервер ресурсов для интеграции Keycloak с Spring Security

У меня есть используйте случай, когда я получаю токен авторизации через тело вместо заголовка, и из-за этого Keycloak и Spring автоматически не устанавливают пользователя.

Spring Security 5.1 поставляется со встроенным в поддержке для токенов доступа на основе JWT, поэтому вам может не понадобиться использовать адаптер Keycloak для того, что вы хотите сделать.

При использовании встроенной поддержки Spring Security вы можете настроить DefaultBearerTokenResolver смотреть в теле:

@Bean
public BearerTokenResolver bearerTokenResolver() {
    DefaultBearerTokenResolver resolver =
            new DefaultBearerTokenResolver();
    resolver.setAllowFormEncodedBodyParameter(true);
    return resolver;
}
...