Maison  >  Article  >  Java  >  Utilisation d'OAuth pour l'authentification dans le développement d'API Java

Utilisation d'OAuth pour l'authentification dans le développement d'API Java

WBOY
WBOYoriginal
2023-06-18 09:59:321732parcourir

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.

  1. Introduction à OAuth
    OAuth (Open Authorization) est une norme ouverte d'autorisation entre les propriétaires de ressources et les fournisseurs de services. OAuth autorise l'accès aux données d'un autre service au nom d'un utilisateur ou d'un service sans transmettre les informations d'identification logiques du visiteur, telles que le nom d'utilisateur et le mot de passe. Il s'agit d'une solution sécurisée, élégante et utile qui prend en charge une intégration transparente entre différentes applications.
  2. Protocole OAuth
    Le cœur du protocole OAuth est le processus d'autorisation. Le processus d'autorisation OAuth implique quatre participants principaux : le propriétaire de la ressource, le client, le serveur d'autorisation et le serveur de ressources. La plupart des applications OAuth peuvent être complétées par ces acteurs.

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.

  1. Utilisation d'OAuth dans le développement d'API Java
    Le développement d'API Java nécessite souvent la gestion et la gestion de l'authentification et de l'autorisation des utilisateurs. La technologie OAuth est très utile à ces fins. Dans l'exemple suivant, nous utiliserons Spring Security et Spring OAuth2.

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 :

b4b38e33757a6497aa8690936b905cc1

<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.3.6.RELEASE</version>

09a0e22e5aaafd848ae04665be625b91

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.

  1. Conclusion
    La technologie OAuth est un processus d'autorisation puissant qui peut être utilisé pour prendre en charge une intégration transparente entre différentes applications. Dans le développement d'API Java, OAuth peut être utilisé pour l'authentification et l'autorisation afin de garantir un accès approprié aux ressources protégées et de protéger la sécurité des utilisateurs. En utilisant Spring Security et Spring OAuth2, nous pouvons facilement implémenter les fonctions de base de la technologie OAuth.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn