Сервер ресурсов Spring Boot OAuth2 - Ошибка при вызове user-info-uri или token-info-uri

Я пытаюсь создать сервер авторизации и ресурсов Spring boot oauth2 отдельно.

Чтобы получить аутентификацию токена запроса, сервер ресурсов вызывает настроенный URI.

security:      
      oauth2:
            resource:
            user-info-uri: http://localhost:9999/uaa/user 

На сервере авторизации я реализовал метод / пользователя, как описано в некоторых руководствах, например

https://spring.io/blog/2015/02/03/sso-with-oauth2-angular-js-and-spring-security-part-v

    @SpringBootApplication
    @RestController
    @EnableAuthorizationServer
    public class ApplicationAuthorizationServer   {

    ... 

    @RequestMapping("/user")
    public Principal user(Principal user) {
      return user;
    }
   }

При весенней загрузке автоконфигурация создает UserInfoTokenService, который будет использоваться OAuth2AuthenticationProcessingFilter для вызова метода / пользователя, который ожидал возвращаемого типа Map.

Первый вопрос!

Директор - это не карта. Как это работает вместе?

Второй вопрос!

Если UserInfoTokenService вызывает метод / пользователя на сервере авторизации, параметр Principal имеет значение NULL, и аутентификация не выполняется.

Кто заполняет значение основного параметра?

И последний вопрос!

Поскольку я трачу так много времени напрасно, я пытаюсь использовать другой URI

security:      
     oauth2:
       resource:
         token-info-uri: http://localhost:9999/uaa/oauth/check_token

Но если я определяю только этот URI, OAuth2AuthenticationProcessingFilter использует DefaultTokenService и пытается найти токен в хранилище токенов в памяти сервера ресурсов. Служба их не нашла и вернулась с ошибкой аутентификации.

Автоконфигурация Spring Boot должна создать такую ​​службу, как TokeInfoTokenService, например, для вызова конечной точки информации токена.

Почему в этом случае создается DefaultTokenService?

Кто-нибудь может мне помочь?


person Michael Schäfer    schedule 08.05.2017    source источник


Ответы (1)


я могу дать вам несколько ответов:

Директор - это не карта. Как это работает вместе? Возвращенная карта будет принята Spring Security, а затем отдельные ключи будут сопоставлены с полями Принципала. Таким образом, если на карте есть поле «полномочия», оно будет сопоставлено с основными полномочиями. То же самое с user_name и т. Д.

Кто заполняет значение основного параметра? В случае следующей конфигурации:

security:      
 oauth2:
   resource:
     token-info-uri: http://localhost:9999/uaa/oauth/check_token

RemoteTokenServices.java загружает участника в метод loadAuthentication(String accessToken) и добавляет все значения с помощью конвертера токенов.

Надеюсь, это поможет ..

person merlinsson    schedule 27.12.2018