Mit der Entwicklung moderner Software und der Popularität von Anwendungen gibt es immer mehr Anfragen, die eine Identitätsauthentifizierung und -autorisierung erfordern. Die OAuth-Technologie bietet eine Lösung für diese Anfragen. Bei der Java-API-Entwicklung kann die OAuth-Technologie zur Unterstützung mehrerer Authentifizierungs- und Autorisierungsszenarien verwendet werden. In diesem Artikel werden die Grundprinzipien von OAuth und seine spezifische Anwendung in der Java-API-Entwicklung vorgestellt.
Der Ressourceneigentümer bezieht sich auf alle Personen oder Entitäten, die auf den Ressourcenserver zugreifen können. Der Client bezieht sich auf die Drittanbieteranwendung, die auf den Dienst zugreift und auf Ressourcen auf dem Ressourcenserver zugreifen kann Tokens-Server; der Ressourcenserver ist der Server, der die tatsächlichen Daten speichert und den Client-Zugriff über Tokens authentifiziert.
Die grundlegenden Schritte des OAuth-Prozesses sind wie folgt:
Schritt 1: Der Client fordert die Autorisierung vom Ressourcenbesitzer an. Die Anfrage umfasst die Identifizierung des Clients, des erforderlichen Autorisierungstyps, des Umfangs und des Umleitungs-URI. Zu den gängigen Autorisierungstypen gehören „Autorisierungscode“ und „Kennwortanmeldeinformationen des Ressourcenbesitzers“. in Der URI, der zur Bereitstellung der Ressource nach Autorisierung durch den Eigentümer verwendet wird.
Schritt 2: Der Ressourceneigentümer autorisiert den Client. Dies kann durch die Ausstellung eines Zugriffstokens an den Client oder durch die Autorisierung des Clients direkt im Webbrowser erfolgen. Bei einigen Anfragen kann es erforderlich sein, den Ressourceneigentümer anzufordern und um Rat zu bitten.
Schritt 3: Der Client verwendet das Autorisierungszugriffstoken, um ein Token vom Autorisierungsserver anzufordern. Der Client übergibt seine eigene Identität und sein eigenes Autorisierungszugriffstoken als Parameter.
Schritt 4: Autorisieren Sie den Server, um den Client zu authentifizieren und die Anfrage zu genehmigen. Wenn die Anfrage gültig ist, stellt der Autorisierungsserver dem Client ein Zugriffstoken aus.
Schritt 5: Der Client verwendet das Token, um geschützte Ressourcen vom Ressourcenserver anzufordern. Der Client übergibt seine eigene Identität und sein eigenes Token als Parameter.
Schritt 6: Wenn das Token gültig ist und der Client berechtigt ist, auf die geschützte Ressource zuzugreifen, antwortet der Ressourcenserver auf die Anfrage.
Zuerst müssen wir Abhängigkeiten für Spring Security und Spring OAuth2 hinzufügen. Dies kann mit den folgenden Maven-Koordinaten erfolgen:
<groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.3.6.RELEASE</version>
Dann müssen wir die Konfiguration des Autorisierungsservers einrichten. Hier ist ein einfaches Konfigurationsbeispiel:
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig erweitert AuthorizationServerConfigurerAdapter {
@Autowired private DataSource dataSource; @Autowired private AuthenticationManager authenticationManager; @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.jdbc(dataSource); } @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { endpoints.authenticationManager(authenticationManager).tokenStore(tokenStore()); } @Bean public TokenStore tokenStore() { return new JdbcTokenStore(dataSource); }
}
In dieser Konfiguration aktivieren wir den OAuth2-Autorisierungsserver mithilfe der Annotation @EnableAuthorizationServer. Wir richten den Client-Details-Dienst ein, um die Client-Details mithilfe von jdbcTemplate abzurufen. Wir müssen auch den Authentifizierungsmanager und den Tokenspeicher einrichten.
Als nächstes müssen wir die Konfiguration des Ressourcenservers einrichten. Hier ist ein einfaches Konfigurationsbeispiel:
@Configuration
@EnableResourceServer
public class ResourceServerConfig erweitert ResourceServerConfigurerAdapter {
@Override public void configure(HttpSecurity http) throws Exception { http.csrf().disable().anonymous().disable().authorizeRequests().antMatchers("/api/**").authenticated(); } @Override public void configure(ResourceServerSecurityConfigurer resources) { resources.resourceId("api"); }
}
In dieser Konfiguration verwenden wir die Annotation @EnableResourceServer, um den OAuth2-Ressourcenserver zu aktivieren. Wir verwenden die Methode configure, um die HTTP-Sicherheit zum Schutz von Ressourcen zu konfigurieren. Wir definieren die ID für den Ressourcenserver mithilfe der Methode „resourceId“.
Das obige ist der detaillierte Inhalt vonVerwendung von OAuth zur Authentifizierung in der Java-API-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!