Microservices et Spring Security OAuth2

Vertti

J'ai déjà un serveur d'autorisation OAuth2 en cours d'exécution dans un autre projet. Maintenant, j'aurais besoin de sécuriser plusieurs serveurs de repos simples à démarrage à ressort avec OAuth2. Mais je trouve que la documentation de Spring est vraiment très limitée lorsqu'il s'agit de séparer les serveurs d'autorisation et de ressources.

J'ai également trouvé plusieurs questions où la réponse a été "Eh bien, ils peuvent être des boîtes différentes tant qu'ils partagent la même source de données tokenStore". Cela peut-il vraiment être vrai? Comment cela pourrait-il fonctionner pour les microservices? Il semblerait vraiment étrange que chaque service de repos ait besoin d'implémenter son propre serveur d'autorisation OAuth.

Alors, comment configurer la sécurité Oauth2.0 pour les points de terminaison de repos à démarrage à ressort qui font référence à un serveur d'autorisation Oauth distant (peut-être même pas écrit avec Spring)?

Il y a cette chose appelée RemoteTokenServices qui semble prometteuse mais qui n'est pas vraiment documentée du tout.

Pratik Shah

Lors de la configuration de votre serveur auh:

Créez un nouveau clientDétails ClientDetailsServiceConfigurerpour le serveur de ressources. qui sera utilisé pour configurer RemoteTokenService.

Configurez Spring Security OAuth2 dans votre serveur de ressources:

Créer une classe qui est annoter avec @EnableWebSecurity, @Configurationet se prolonge WebSecurityConfigurerAdapter.

@Configuration
@EnableWebSecurity
protected static class ResourceConfiguration extends WebSecurityConfigurerAdapter {
  // methods        
}

Créez une méthode avec @Bean annotée qui retournera une instance de TokenService, qui sera utilisée pour créer AuthenticationManager.

Dans cette méthode , créer une instance de RemoteTokenServiceet ensemble clientId, client_secret, checkTokenEndpointUrl et DefaultAccessTokenConverterWithClientRoles(cette classe est notre implémentation pour obtenir client_authority lors de l' authentification accessToken dans le serveur OAuth2.)

@Bean
public ResourceServerTokenServices tokenService() {
    RemoteTokenServices tokenServices = new RemoteTokenServices();
    tokenServices.setClientId("resource_id");
    tokenServices.setClientSecret("resource_secret");
    tokenServices.setCheckTokenEndpointUrl("http://<server-url>: <port>/oauth/check_token");
    return tokenServices;
}

Remplacez la authenticationManagerBean()méthode et annotez-la avec @Beanet renvoyez une instance de OAuth2AuthenticationManageravec TokenServiceinjected.

@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception {
    OAuth2AuthenticationManager authenticationManager = new OAuth2AuthenticationManager();
    authenticationManager.setTokenServices(tokenService());
    return authenticationManager;
}

Créer une classe annotée avec @EnableResourceServer, @Configurationet étendre ResourceServerConfigurerAdapter.

@Configuration
@EnableResourceServer
protected static class ResourceServerConfig extends ResourceServerConfigurerAdapter {
  // Mehotds
}

Remplacer les méthodes Configure forment la super classe pour configurer le serveur de ressources. Configurer différent pour configurer le serveur de ressources.

ResourceServerSecurityConfigurer : pour configurer Resource_id.

HttpSecurity : Cela configurera le filtre de sécurité pour lui indiquer que l'utilisateur requiert une authentification pour les URL protégées (API).

@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
    resources.resourceId("resource_id");
}

@Override
public void configure(HttpSecurity http) throws Exception {
    // @formatter:off
    http
     .authorizeRequests()
     .antMatchers("/**").authenticated()
     .and()
     .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    // @formatter:on
}

.antMatcher("/**").authenticated()cette ligne sécurisera chaque URL d'API de votre serveur de ressources. .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)ne créera pas de session.

PS :: Si quelque chose ne va pas, dites-moi.

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Clients Web et mobiles pour Spring Security OAuth2

Authentification gRPC et OAuth2 avec Spring Security

Comment rafraîchir OAuth2 jeton avec Spring Security 5 client OAuth2 et RestTemplate

Échec de l'autorisation OpenID (OAuth2) avec Spring Boot et Spring Security

Spring Security OAuth2 danse et obtient les paramètres

Spring Security OAuth2 et FormLogin dans une seule application

Contrôle des redirections d'authentification avec JHipster, Spring Security et oauth2

Authentification Spring Security OAuth2 et Ldap au même recours

Spring Security Oauth2 et configuration de la connexion par formulaire

Connexion Spring security oauth2 et serveur de ressources dans la même application

Spring Security OAuth2: InsufficientAuthenticationException

Spring Security OAuth2 | InsufficientAuthenticationException

Spring Security OAuth2 UserRedirectRequiredException

Sécurisation de l'API REST à l'aide de l'annotation Spring-security @PreAuthorize et d'OAuth2

Comment sécuriser le point de terminaison de repos Apache Camel avec Spring Security et OAuth2

Spring Cloud Gateway OAuth2 avec Spring Security OAuth2 Authorization Server = boucle

Spring Security Oauth2 pour le site Web Spring

Spring Security avec Spring Boot et OAuth 2

Comment configurer Spring Boot et Spring Security pour prendre en charge la connexion par formulaire et la connexion Google OAuth2

Quelle est la relation entre spring-security-oauth2-client et spring-security-oauth?

Authentification à deux facteurs avec Spring Security OAUTH2

Spring OAuth2 Security - Client Credentials - Custom AuthenticationProvider

CORS interférant avec oauth2 Spring Security

Authentification Spring Security Oauth2 pour Javascript WebApp

Spring Security OAuth2 get Access Denied on REST Service

Ajouter UserDetailsService personnalisé à l'application Spring Security OAuth2

NoClassDefFoundError: javax / xml / bind / UnmarshalException - Spring Security oauth2

Serveur de ressources pures Spring Security OAuth2

Mise à niveau de Spring Security OAuth2

TOP liste

  1. 1

    Filtrer le dataframe basé sur plusieurs colonnes d'un autre dataframe

  2. 2

    Laravel SQLSTATE [HY000] [1049] Base de données inconnue 'previous_db_name'

  3. 3

    Enregistrer le chemin de l'image de la galerie vers la base de données de la salle et l'afficher dans la liste des recycleurs

  4. 4

    Comment afficher du texte au milieu de div avec une couleur d'arrière-plan différente?

  5. 5

    Microsoft.WebApplication.targets

  6. 6

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  7. 7

    Échec de l'exécution de 'insertBefore' sur 'Node': le paramètre 1 n'est pas de type 'Node'

  8. 8

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  9. 9

    Comment analyser un fichier avec un tableau d'objets JSON en utilisant Node.js?

  10. 10

    comment afficher un bouton au-dessus d'un autre élément ?

  11. 11

    Comment centrer un div tout en utilisant la transition et transformer avec l'échelle

  12. 12

    Filtrer les données en fonction des conditions d'une trame de données

  13. 13

    ESP8266 HADRWARE MINUTERIE, USA pour cocher une macro étrange

  14. 14

    Comment définir du texte dans un QLabel et afficher les caractères '<>'?

  15. 15

    System.Data.SqlClient.SqlException: 'Nom de colonne non valide' ApplicationRoleId '.'

  16. 16

    Pourquoi Phantomjs ne fonctionne pas avec ce site ?

  17. 17

    Stop jQuery execution after one time execution

  18. 18

    Concaténer des variables dans ansible

  19. 19

    Comment calculer la probabilité du graphique de densité?

  20. 20

    php ajouter et fusionner des données de deux tables

  21. 21

    Redirection HTTP vers HTTPS dans Java à l'aide de HTTPURLConnection

chaudétiquette

Archive