Müssen wir OAuth2AuthorizationRequest in der Methode OAuth2AuthorizationService.save speichern?Java

Java-Forum
Guest
 Müssen wir OAuth2AuthorizationRequest in der Methode OAuth2AuthorizationService.save speichern?

Post by Guest »

Ich verwende Spring Authorization Server, um einen Autorisierungsserver zu erstellen.
Zum Speichern und Abrufen von Autorisierungen habe ich einen benutzerdefinierten Autorisierungsdienst implementiert, der die OAuth2AuthorizationService-Schnittstelle implementiert. Wenn die Methode save aufgerufen wird, speichere ich den Client, den Gewährungstyp, die autorisierten Bereiche, den Prinzipal und die im Autorisierungsobjekt verfügbaren Token. Ich speichere keine Attribute des Autorisierungsobjekts, da ich keine benutzerdefinierten Attribute definiert habe.
Wenn ich die Anfrage an den /authorize-Endpunkt sende, erhalte ich den Autorisierungscode zurück und es wird wie erwartet in der Datenbank gespeichert. Wenn ich jedoch den Endpunkt /token aufrufe, um das Zugriffstoken abzurufen, wird eine Ausnahme ausgelöst.

Code: Select all

java.lang.NullPointerException: Cannot invoke "org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest.getAdditionalParameters()" because

"authorizationRequest" is null at org.springframework.security.oauth2.server.authorization.authentication.CodeVerifierAuthenticator.authenticate(CodeVerifierAuthenticator.java:97) at org.springframework.security.oauth2.server.authorization.authentication.CodeVerifierAuthenticator.authenticatelfAvailable(CodeVerifierAuthenticator.java:73) at org.springframework.security.oauth2.server.authorization.authentication.ClientSecretAuthentication Provider.authenticate(ClientSecretAuthenticationProvider.java:151) at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:182) at org.springframework.security.authentication. ObservationAuthenticationManager.lambda$authenticate$1(ObservationAuthenticationManager.java:54)
Ich habe das Nullobjekt OAuth2AuthorizationRequest auf die Methode CodeVerifierAuthenticator.authenticate zurückgeführt:

Code: Select all

OAuth2AuthorizationRequest authorizationRequest = (OAuth2AuthorizationRequest)authorization.getAttribute(OAuth2AuthorizationRequest.class.getName());

Da ich die als Attribut im Autorisierungsobjekt vorhandene Autorisierungsanforderung nicht speichere, kann ich sie nicht zurückholen. Außerdem glaube ich nicht, dass die Autorisierungsanfrage selbst gespeichert werden müsste.
Daher möchte ich bestätigen, ob sie tatsächlich gespeichert werden muss oder ob ich vielleicht etwas falsch mache.< /p>
Ich habe versucht, ein neues Autorisierungsanforderungsobjekt zu erstellen und es der Autorisierung zuzuweisen, nachdem ich es aus der Datenbank abgerufen habe. Der Autorisierungsanforderungs-Builder ist jedoch nur für den Autorisierungsgewährungstyp und den erforderlichen Anforderungs-URI verfügbar, die ich nicht fest codieren möchte.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post