Warum ist mein token abgelehnt? Was ist eine resource-ID? "Invalid token enthält keine Ressource-id (oauth2-Ressource)"

Ich versuche zu konfigurieren, OAuth2 für ein spring-Projekt. Ich bin mit einem gemeinsam genutzten LNF (oauth Implementierung von cloud foundry) Instanz-mein Arbeitsplatz bietet (so bin ich nicht versuchen, um einen Autorisierungs-server und dem Autorisierungs-server ist separat von der Ressource server). Das frontend ist eine single-page-Anwendung, und es wird praktisch direkt aus der Autorisierungs-server über die implizite gewähren. Ich habe die SPA-Einrichtung, wo es fügt die Authorization: Bearer <TOKEN> header auf jeder web-API-Aufruf zu microservices.

Mein Problem ist jetzt mit der microservices.

Ich versuche, diese gemeinsame Autorisierungs-server zu authentifizieren, der microservices. Ich habe vielleicht ein Missverständnis hier, kaufen Sie mein Aktuelles Verständnis ist, dass diese microservices in die Rolle der Ressourcen-server, weil Sie Gastgeber der Endpunkte der SPA verwendet, um Informationen zu bekommen.

So, ich habe versucht, konfigurieren Sie einen microservice in etwa so:

@Configuration
@EnableResourceServer
public class OAuth2ResourceServerConfig extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.csrf().disable()
        .authorizeRequests()
        .antMatchers("/api/**").authenticated();
    }

    @Bean
    public TokenStore tokenStore() {
        return new JwtTokenStore(accessTokenConverter());
    }

    @Bean
    public JwtAccessTokenConverter accessTokenConverter() {
        JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
        converter.setVerifierKey("-----BEGIN PUBLIC KEY-----<key omitted>-----END PUBLIC KEY-----");
        return converter;
    }

    @Bean
    @Primary
    public DefaultTokenServices tokenServices() {
        DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
        defaultTokenServices.setTokenStore(tokenStore());
        return defaultTokenServices;
    }


    @Override
    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
         resources.tokenServices(tokenServices());
    }
}

Nun, Wann immer ich traf eine /api/** mit der Authorization: Bearer <TOKEN> bekomme ich einen 403 mit diesem Fehler:

{
    "error": "access_denied",
    "error_description": "Invalid token does not contain resource id (oauth2-resource)"
}

Also hier sind meine Fragen:

  • Wie Konfiguriere ich diese microservices zur Validierung der token und legen Sie eine Principal in controller-Methoden? Ich habe derzeit die Einstellungen, in denen die SPA hat und sendet den token und ich habe auch den öffentlichen Schlüssel zum überprüfen der Signatur des Tokens. Ich habe auch jwt.io zu testen, das token, und es sagt "Unterschrift Geprüft".
  • Was ist eine resource-id? Warum brauche ich es und warum kommt es zu dem oben genannten Fehler? Ist, dass eine Feder nur was??

Dank!

InformationsquelleAutor Rico Kahler | 2017-12-27
Schreibe einen Kommentar