Я пытаюсь создать сервер авторизации и ресурсов 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?
Кто-нибудь может мне помочь?