Доступ к токену JWT во время проверки

Я играю с реализацией Spring Cloud OAuth2, используя следующие примеры:

https://github.com/spring-cloud-samples/authserver

https://github.com/spring-cloud-samples/sso

Первый - это сервер OAuth, который генерирует токены JWT при аутентификации пользователя. Второй - это ресурс, который потребляется. Ресурс передает аутентификацию пользователя серверу аутентификации в соответствии со спецификацией OAuth.

Кажется, все работает очень хорошо, что наводит меня на дополнительные вопросы:

  1. Как я могу получить доступ к clientId и clientSecret на сервере аутентификации во время аутентификации?
  2. Могу ли я определить, какие значения используются для генерации токена JWT?
  3. В SSO, как мне получить доступ к содержимому токена (например, принципала) после аутентификации пользователя?

person Klaus    schedule 15.12.2014    source источник


Ответы (1)


Ответ на 3): измените подпись метода, чтобы включить:

@AuthenticationPrincipal  User principal

Таким образом, учетные данные для аутентификации будут переданы методу контроллера, вызываемому Spring. Другой способ - через контекст безопасности:

SecurityContext securityContext = SecurityContextHolder.getContext(); 
Authentication authentication = securityContext.getAuthentication();

Что касается пункта 2), я предполагаю, что для того, чтобы повлиять на параметры, используемые для вычисления токена JWT, необходимо реализовать собственный AccessTokenConverter. Если я правильно понимаю, то по умолчанию DefaultAccessTokenConverter не позволяет этого. Я приветствую любое другое мнение по этому поводу.

person Klaus    schedule 15.12.2014