2016-04-19 6 views
0

Ich erstelle eine geschützte Ruhe apis basierend auf oauth2.0 Framework.Oauth2.0 auhtorization server konfiguration

Ich baute den Autorisierungsserver und den Ressourcenserver erfolgreich.

Die AuthorizationServer erstreckt AuthorizationServerConfigurerAdapter und überschreibt einige Methoden, ich bin

public void configure (ClientDetailsServiceConfigurer Clients) ein Problem mit dieser erweiterten Methode gegenüber throws Exception {}

Hier ist die Erklärung

Wenn ich diese Version der config()Autorisierungsserver läuft

@Override 
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception { 

     clients.inMemory().withClient("clientapp").authorizedGrantTypes("password", "refresh_token") 
       .scopes("read", "write").resourceIds(RESOURCE_ID).secret("123456"); 

    } 

diese Methode funktioniert gut und gibt einen access_token, wenn ich danach fragen.

Aber wenn ich die gleiche Methode mit einigen Verbesserungen ausgeführt habe, bekam ich nichts, wenn ich um access_token bat, aber 401 nicht autorisierte HTTP-Antwort.

public void configure(ClientDetailsServiceConfigurer clients) throws Exception { 
    int n = appMetier.getAppsCount(); 
    for (App app:appMetier.findAll(0, n).getApps()) { 
     clients.inMemory().withClient(app.getClientPublicId()).authorizedGrantTypes("password", "refresh_token") 
       .scopes("read", "write").resourceIds(RESOURCE_ID).secret(app.getClientSecretId()); 
    } 
    } 

Die n Variable hier entspricht 17, das bedeutet, ich habe 17 Clients in Memory, die das Recht haben, ein access_token zu erhalten.

Der einzige, der das access_token von der 17 bekommt, ist der erste.

Ihre Antworten bitte und danke im Voraus.

+0

Sie benötigen mehrere Clients für denselben OAuth-Anbieter? – 11thdimension

Antwort

0

Sie rufen inMemory() mehrmals an, wodurch der Builder-Dienst jedes Mal überschrieben wird. Es sollte nur einmal aufgerufen werden.

Der folgende Code sollte funktionieren.

public void configure(ClientDetailsServiceConfigurer clients) throws Exception { 
    int n = appMetier.getAppsCount(); 
    InMemoryClientDetailsServiceBuilder clientBuilder = clients.inMemory(); 

    for (App app:appMetier.findAll(0, n).getApps()) { 
     clientBuilder.withClient(app.getClientPublicId()).authorizedGrantTypes("password", "refresh_token") 
      .scopes("read", "write").resourceIds(RESOURCE_ID).secret(app.getClientSecretId()); 
    } 
} 
+0

Gern geschehen! – 11thdimension

Verwandte Themen