erfrischenden habe ich zwei Frühling Anwendungen: einen Authentication Service und Business Service.Spring, OAuth2: Authentifizierungsdetails verloren, nachdem das Token
Wenn ein Webservice Benutzer im Dienst Authentifizierung authentifiziert, bekommt er ein access_token
und ein refresh_token
. Er kann seine access_token
aktualisieren, indem er die refresh_token
an den Dienst sendet. Der Dienst implementiert AuthenticationProvider
, da die Einzelheiten der Authentifizierung festgelegt werden:
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
UsernamePasswordAuthenticationToken newAuthentication = ...;
LinkedHashMap<String, Object> detailsMap = (LinkedHashMap<String, Object>) authentication.getDetails();
detailsMap.put(...);
newAuthentication.setDetails(detailsMap);
return newAuthentication;
}
Der Business Service wird gesichert durch Oauth2
. Sein Controller enthält
@Secured({ SOME_ROLE })
@RequestMapping(...)
public ResponseEntity<?> doSomething(OAuth2Authentication authentication) {
LinkedHashMap<String, String> detailsMap = (LinkedHashMap<String, String>) authentication
.getUserAuthentication().getDetails();
Wenn der Webservice Benutzer am Authentifizierungsdienst authentifiziert und ruft die Business Service wird detailsMap
die in authenticate()
Satzinformationen enthalten. Aber wenn er das Token aktualisiert und den Business Service erneut aufruft, wird detailsMap
null
sein.
Ich möchte die detailsMap
beibehalten werden, nachdem das Token aktualisiert wurde. Wie kann ich das erreichen?