Как получить всю информацию аутентифицированного пользователя на сервере ресурсов oauth2 - PullRequest
0 голосов
/ 20 января 2019

У меня есть монолитное приложение, которое настроено на безопасность пружины. Существует код User user = (User)SecuritycontextHolder.getContext().getAuthentication().getPrincipal() для аутентификации пользователя, и этот код работает правильно.
После миграции на oauth2 со следующей конфигурацией:

@EnableResourceServer
@EnableWebSecurity
@Configuration
public class ResourcesServerConfiguration extends ResourceServerConfigurerAdapter {
    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers(HttpMethod.GET, "/api/**").access("#oauth2.hasScope('read')");
    }

    @Primary
    @Bean
    public RemoteTokenServices tokenService() {
        RemoteTokenServices tokenService = new RemoteTokenServices();
        tokenService.setCheckTokenEndpointUrl("http://localhost:8081/auth/account/getDetailUser");
        tokenService.setClientId("web");
        tokenService.setClientSecret("secret");
        return tokenService;
    }

И его application.yml:

spring:
    datasource:
        url: jdbc:oracle:thin:@192.168.192.129:1521:hamed
        hikari:
            connection-test-query: SELECT 1 FROM DUAL
            minimum-idle: 1
            maximum-pool-size: 5
        driver-class-name: oracle.jdbc.OracleDriver
        username: test
        password: test
        initialization-mode: always
    jpa:
      hibernate:
        ddl-auto: none
      database-platform: org.hibernate.dialect.Oracle12cDialect
logging:
  level:
    org.springframework.security: DEBUG

server:
  port: 8083
  context-path: /micro1
security:
  basic:
    enabled: false
  oauth2:
      client:
        clientId: web
        clientSecret: secret
        accessTokenUri: http://localhost:8081/auth/oauth/token
        userAuthorizationUri: http://localhost:8081/auth/oauth/authorize
      resource:
        userInfoUri: http://localhost:8081/auth/account/getDetailUser

(User)SecuritycontextHolder.getContext().getAuthentication().getPrincipal() не работает на сервере ресурсов. С другой стороны, как получить от сервера авторизации полномочия и другую информацию от пользователя, прошедшего авторизацию, в Resource Server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...