2017-10-31 2 views
0

Ich verwende ClientCredentialsResourceDetails, um mein OAuth2RestTemplate-Objekt einzurichten.Kann Token mit Spring ClientCredentialsResourceDetails nicht aktualisieren

Meine OAuth2-fähige API sendet mir refresh_token in der Antwort zurück, die zum Aktualisieren von Zugriffstoken verwendet werden kann.

jedoch Frühling nicht implementiert Token refresh für ClientCredentialsResourceDetails Objekt, wie es here

Gibt es eine Möglichkeit Arbeits Token Refresh zu bekommen gesehen werden kann, oder mache ich etwas falsch?

FYI, das ist mein Stück Feder Code für oauth Bohnen

@Bean 
@Primary 
public OAuth2ProtectedResourceDetails oAuth2ProtectedResourceDetails() { 
    final ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails(); 
    resourceDetails.setClientId(clientKey); 
    resourceDetails.setClientSecret(clientSecret); 

    final URI accessTokenUri = UriComponentsBuilder.newInstance() 
      .host(host) 
      .path(tokenUrlPath) 
      .scheme(scheme) 
      .build() 
      .toUri(); 

    resourceDetails.setAccessTokenUri(accessTokenUri.toString()); 
    resourceDetails.setClientAuthenticationScheme(AuthenticationScheme.header); 

    return resourceDetails; 
} 

@Bean 
public OAuth2RestTemplate oAuth2RestTemplate(
     OAuth2ProtectedResourceDetails oAuth2ProtectedResourceDetails 
) { 
    final OAuth2RestTemplate oAuth2RestTemplate = new OAuth2RestTemplate(oAuth2ProtectedResourceDetails); 
    oAuth2RestTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory()); 
    return oAuth2RestTemplate; 
} 

Antwort

1

Es ist, weil "4.4.3. Access Token Response" in RFC 6749 (Die OAuth 2.0 Authorization Framework) sagt, wie folgt:

Wenn der Zugang Die Token-Anfrage ist gültig und autorisiert. Der Autorisierungs-Server gibt ein Zugriffs-Token aus, wie in Abschnitt 5.1 beschrieben. Ein Refresh-Token SOLLTE NICHT enthalten sein. Wenn die Anforderung die Clientauthentifizierung nicht bestanden hat oder ungültig ist, gibt der Autorisierungsserver eine Fehlerantwort zurück, wie in Abschnitt 5.2 beschrieben.

Kurz gesagt, Client Credentials Flow sollte keinen Aktualisierungs-Token ausgeben. Frühling entspricht der Anforderung.