2017-02-07 6 views
1

Я изо всех сил пытаюсь заставить мой сервер ресурсов разговаривать с моим сервером авторизации.Spring Boot OAuth2

Это конфигурация для моего сервера авторизации.

@Configuration 
@EnableAuthorizationServer 
public class AuthorisationServerConfig extends AuthorizationServerConfigurerAdapter { 

    @Override 
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception { 
     clients.inMemory().withClient("app1").secret("password").authorizedGrantTypes("authorization_code", "refresh_token", "password", "client_credentials") 
       .scopes("openid"); 
    } 

} 

Это мой конфиг для сервера ресурсов:

@SpringBootApplication 
@EnableResourceServer 
@RestController 
public class ResourceServerApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(ResourceServerApplication.class, args); 
    } 

    @RequestMapping("/hello") 
    public String home() { 
     return "Hello World!"; 
    } 
} 

и это application.yml для сервера ресурсов:

security: 
    oauth2: 
    client: 
     id: app1 
     client-secret: password 
     access-token-uri: http://localhost:9999/oauth/token 
     user-authorization-uri: http://localhost:9999/oauth/authorize 

я могу запросить маркер из моей AS используя следующее:

$ curl app1:[email protected]:9999/uaa/oauth/token -d grant_type=client_credentials 
{"access_token":"5e74b3fd-41d2-48a7-a21c-31edf52bcb63","token_type":"bearer","expires_in":43199,"scope":"openid"} 

Затем я использую маркер ударилась ресурсов API с использованием следующих

$ curl -H "Authorization: Bearer 5e74b3fd-41d2-48a7-a21c-31edf52bcb63" localhost:8080/hello 
{"error":"invalid_token","error_description":"Invalid access token: 5e74b3fd-41d2-48a7-a21c-31edf52bcb63"} 

Однако я получаю недопустимый маркер и ничего, чтобы указать, в журналах, может кто-нибудь, пожалуйста, помогите, мне кажется, это неправильно конфигурации для сервера ресурсов ,

ответ

0

application.yml Ваш ресурс сервера должен содержать конфигурации, как этот

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

этого пользователя конечной точки должны подвергать пользовательские данные в AS, как этот

@RequestMapping(value = "/user", 
     method = RequestMethod.GET) 
public Principal user(Principal user) { 
    return user; 
} 

Это взято из spring security documentation

Обновление: убедитесь, что @EnableWebMvc не используется. Это не работает в случае приложений с использованием Spring безопасности, так как это filter based

+0

Нет необходимости в информации-info-uri. Мы используем токены JWT, содержащие данные пользователя. – Jack

Смежные вопросы