Ich habe die Github-Authentifizierung mit Spring Security OAuth2 erfolgreich bestanden. Die Benutzerrolle, die über Github erhalten wird, ist jedoch USER_ROLE.Kann ich die Rolle nach erfolgreicher Authentifizierung ändern?
Also habe ich mich gefragt, ob ich die entsprechende Rolle ändern könnte, indem ich Github-Benutzerinformationen beurteile, die erhalten wurden, nachdem die Autorisierung erfolgreich war, um die Berechtigungen des Benutzers zu kontrollieren.
Zum Beispiel getPrincipal(), um einen eindeutigen "Namen" zu erhalten. Ändern Sie dann die Rolle mit "Name" (z. B. "ADMIN"). Verwenden Sie schließlich @PreAuthorize ("hasRole ('ROLE_ADMIN')"), um die Berechtigungen zu steuern.
Oder gibt es noch andere bessere Lösungen? Ich möchte Githubs OAuth2-Autorisierung und rollenbasierte Rechteverwaltung in diese Anwendung integrieren.
BenutzernamePasswordToken ist falsch. OAuth und andere Authentifizierungsmethoden sind unterschiedlich. Schließlich habe ich das Problem gelöst, indem ich den OAuth2ClientAuthenticationProcessingFilter neu erstellt und die Methode successfulAuthentication überschrieben habe. Der entscheidende Punkt ist, dass der erste Schritt darin besteht, nach erfolgreicher Authentifizierung festzustellen, ob es sich um mein Github-Konto vom Principal handelt. Dann die aktuelle erfolgreiche Authentifizierung OAuth2Authentication von SecurityContextHolder.getContext(). GetAuthentication() erhalten. Erstellen Sie dann eine neue Authentifizierung und erstellen Sie eine neue OAuth2Authentication in SecurityContextHolder. – Cciradih