Ich versuche, die OAuth-Sicherheit zu implementieren, und habe ein Problem festgestellt, das für mich nicht klar genug ist.
Während der Implementierung habe AuthorizationServerConfigurer
ich drei Konfiguratoren:
ClientDetailsServiceConfigurer
Wird verwendet, um anzugeben, wie und woher Kundendaten abgerufen werden sollen. Beispielsweise kann es sich um einen Dienst handeln, der registrierte Clients aus der Datenbank bereitstellt.Wenn es darum geht AuthorizationServerSecurityConfigurer
und AuthorizationServerEndpointsConfigurer
ich nicht sicher bin, was sie tun oder wie sie konfiguriert werden sollen. In der Dokumentation stand nur:
AuthorizationServerEndpointsConfigurer
: Definiert die Autorisierungs- und Token-Endpunkte sowie die Token-Dienste.
Vielleicht kann jemand in einfachen Worten erklären, was diese beiden Konfiguratoren tun oder wofür sie verwendet werden.
AuthorizationServerConfigurer
Javadoc ist informativer als die verknüpfte Dokumentation. AuthorizationServerSecurityConfigurer
Konfiguriert, wie der Name schon sagt, die Sicherheit des Autorisierungsservers selbst. Sie können beispielsweise die Sicherheit der OAuth-Endpunkte überschreiben, z. B. /oauth/token
einen Handler für den Zugriff verweigern oder den SSL-Zugriff einschränken. In der Dokumentation heißt es dazu:
Konfigurieren Sie die Sicherheit des Autorisierungsservers, dh praktisch den
/oauth/token
Endpunkt. Der/oauth/authorize
Endpunkt muss ebenfalls sicher sein, dies ist jedoch ein normaler Endpunkt für Benutzer und sollte auf die gleiche Weise wie der Rest Ihrer Benutzeroberfläche gesichert werden. Daher wird er hier nicht behandelt. Die Standardeinstellungen decken die häufigsten Anforderungen ab und folgen den Empfehlungen der OAuth2-Spezifikation. Sie müssen hier also nichts unternehmen, um einen Basisserver zum Laufen zu bringen.
Wie für AuthorizationServerEndpointsConfigurer
:
Konfigurieren Sie die nicht sicherheitsrelevanten Funktionen der Authorization Server-Endpunkte wie Token-Speicher, Token-Anpassungen, Benutzergenehmigungen und Gewährungstypen. Sie sollten standardmäßig nichts tun müssen, es sei denn, Sie benötigen Kennwortgewährungen. In diesem Fall müssen Sie ein Kennwort angeben
AuthenticationManager
.
Hier ist ein Beispiel aus einem meiner Projekte:
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints
.authenticationManager(authenticationManager)
.tokenStore(jwtTokenStore())
.tokenEnhancer(tokenEnhancer());
}
Hier habe ich ein JwtTokenStore
als mein TokenStore
und ein angegeben, AuthenticationManager
da ich Password Grants verwendet habe .
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen