Avec le développement de logiciels modernes et la popularité des applications, les demandes nécessitant une authentification et une autorisation d'identité sont de plus en plus nombreuses. La technologie OAuth apporte une solution à ces demandes. Dans le développement d'API Java, la technologie OAuth peut être utilisée pour prendre en charge plusieurs scénarios d'authentification et d'autorisation. Cet article présentera les principes de base d'OAuth et son application spécifique dans le développement d'API Java.
Le propriétaire de la ressource fait référence à toutes les personnes ou entités pouvant accéder au serveur de ressources ; le client fait référence à l'application tierce qui accède au service et peut accéder aux ressources sur le serveur de ressources ; le serveur d'autorisation stocke les informations d'authentification et fournit l'accès ; Serveur de jetons ; le serveur de ressources est le serveur qui stocke les données réelles et authentifie l'accès client via des jetons.
Les étapes de base du processus OAuth sont les suivantes :
Étape 1 : Le client demande l'autorisation au propriétaire de la ressource. La demande comprend l'identification du client, le type d'autorisation requis, la portée et l'URI de redirection. Les types d'autorisation courants incluent le « code d'autorisation » et les « informations d'identification du mot de passe du propriétaire de la ressource ». La portée fait référence à la portée de l'autorisation du propriétaire de la ressource ; in L'URI utilisé pour livrer la ressource après autorisation du propriétaire.
Étape 2 : Le propriétaire de la ressource autorise le client. Cela peut se faire en émettant un jeton d'accès au client ou en autorisant le client directement dans le navigateur Web. Pour certaines demandes, il peut être nécessaire de demander et d'obtenir des conseils auprès du propriétaire de la ressource.
Étape 3 : Le client utilise le jeton d'accès d'autorisation pour demander un jeton au serveur d'autorisation. Le client transmet son propre jeton d'identité et d'accès d'autorisation en tant que paramètres.
Étape 4 : Autorisez le serveur à authentifier le client et approuvez la demande. Si la demande est valide, le serveur d'autorisation émet un jeton d'accès au client.
Étape 5 : Le client utilise le jeton pour demander des ressources protégées au serveur de ressources. Le client transmet sa propre identité et son jeton en tant que paramètres.
Étape 6 : Si le token est valide et que le client est autorisé à accéder à la ressource protégée, le serveur de ressources répond à la requête.
Tout d'abord, nous devons ajouter des dépendances pour Spring Security et Spring OAuth2. Cela peut être fait avec les coordonnées Maven suivantes :
<groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.3.6.RELEASE</version>
Ensuite, nous devons mettre en place la configuration du serveur d'autorisation. Voici un exemple de configuration de base :
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends 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); }
}
Dans cette configuration, nous activons le serveur d'autorisation OAuth2 à l'aide de l'annotation @EnableAuthorizationServer. Nous avons configuré le service de détails client pour obtenir les détails du client à l'aide de jdbcTemplate. Nous devons également configurer le gestionnaire d'authentification et le stockage des jetons.
Ensuite, nous devons configurer la configuration du serveur de ressources. Voici un exemple de configuration de base :
@Configuration
@EnableResourceServer
public class ResourceServerConfig extends 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"); }
}
Dans cette configuration, nous utilisons l'annotation @EnableResourceServer pour activer le serveur de ressources OAuth2. Nous utilisons la méthode configure pour configurer la sécurité HTTP afin de protéger les ressources. Nous définissons l'ID du serveur de ressources à l'aide de la méthode resourceId.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!