Authentification Spring Security OAuth2 et Ldap au même recours

skyhook19:

J'ai l'application REST Spring Boot 2 et je souhaite configurer Spring Security pour prendre en charge la connexion Google OU l'authentification LDAP aux mêmes ressources (/ employés par exemple)

J'ai déjà effectué l'authentification via httpBasic (qui se connecte au serveur Apache AD LDAP).

J'ai également configuré l'authentification via Google OAuth2 Sign-In. Ces deux configurations fonctionnent correctement séparément (je peux m'authentifier via Google Sign-In, mais je ne peux pas avec LDAP en même temps, car je dois recofingurer la sécurité du ressort), et maintenant j'ai besoin de la possibilité de m'authentifier avec les deux méthodes en même temps.

Ma configuration Spring Security pour l'authentification LDAP

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .csrf()
            .disable()
            .authorizeRequests()
            .antMatchers("/", "/login**","/callback/", "/webjars/**", "/error**")
            .permitAll()
            .anyRequest()
            .authenticated()
            .and()
            .httpBasic()
            .and()
            .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    }


    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
                .ldapAuthentication()
                .ldapAuthoritiesPopulator(customLdapAuthoritiesPopulator)
                .userDnPatterns("uid={0},ou=people")
                .groupSearchBase("ou=groups")
                .contextSource()
                .url(env.getProperty("spring.ldap.urls") + env.getProperty("spring.ldap.base"))
                .and()
                .passwordCompare()
                .passwordAttribute("userPassword")
                .passwordEncoder(new LdapShaPasswordEncoder());
    }

Et voici à quoi ça ressemble lorsque je reconfigure Spring Security pour Google OAuth2 Sign-In

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .csrf()
            .disable()
            .authorizeRequests()
            .antMatchers("/", "/login**","/callback/", "/webjars/**", "/error**")
            .permitAll()
            .anyRequest()
            .authenticated()
            .and()
            .oauth2Login()
            .userInfoEndpoint().oidcUserService(customOAuth2UserService);
    }

Le résultat dont j'ai besoin: l'utilisateur a deux options: s'authentifier avec Oauth2, ou, s'il le souhaite, avec httpBasic LDAP, peu importe de quelle manière.

Je pense qu'il existe un moyen de configurer Spring Security pour que OAuth2 et httpBasic LDAP fonctionnent ensemble, mais je ne sais pas comment le faire.

Srinivasan Sekar:

C'est possible.

L'authentification de base utilise de base où comme oauth utilise le support dans le cadre de l'en-tête d'autorisation d'en-tête.

Nous pouvons utiliser un matcher de requêtes personnalisé pour détecter l'authentification de base et s'authentifier avec LDAP. Sinon, ça passera par oauth.

Tout d'abord, commandez le WebSecurityConfigurerAdapter plus haut que le serveur d'authentification Oauth,

@Configuration
@Order(2)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

Utilisez notre mappeur de demandes personnalisé,

http
            .csrf()
            .disable()
            .requestMatcher(new BasicRequestMatcher())
            .authorizeRequests()
            .antMatchers("/", "/login**","/callback/", "/webjars/**", "/error**")
            .permitAll()
            .anyRequest()
            .authenticated()
            .and()
            .httpBasic()
            .and()
            .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS);

Matcher de demande personnalisé,

 private static class BasicRequestMatcher implements RequestMatcher {
    @Override
    public boolean matches(HttpServletRequest request) {
        String auth = request.getHeader("Authorization");
        return (auth != null && auth.startsWith("Basic"));
    }

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

Spring Security et authentification LDAP

Authentification gRPC et OAuth2 avec Spring Security

Spring Security 5.1.1 Client OAuth2 se connectant au serveur d'authentification spring-security-oauth2

Authentification de base Spring Boot et OAuth2 dans le même projet?

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

Utilisation de l'authentification LDAP et DB avec Spring Security

Authentification LDAP - Spring Security - LdapAuthenticationProvider

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

Authentification à l'aide de LDAP avec l'API Spring LDAP et sans utiliser Spring Security

Spring Security LDAP et Remember Me

Microservices et Spring Security OAuth2

Authentification à deux facteurs avec Spring Security OAUTH2

Authentification Spring Security Oauth2 pour Javascript WebApp

Spring Security prend en charge l'authentification LDAP et JPA de plusieurs fournisseurs d'authentification

Spring boot, zuul, problème d'authentification oauth2

Authentification multifacteur avec Spring Boot 2 et Spring Security 5

Authentification de base Spring Security et connexion par formulaire pour la même API

Clients Web et mobiles pour Spring Security OAuth2

Spring Security OAuth2 - @ EnableOauth2Sso mais accepte également les jetons comme authentification

Problème avec l'authentification Spring LDAP

Configuration de l'authentification Microsoft Graph OAuth2 dans Spring Security - Erreur AADSTS90014

Obtenir l'objet d'authentification (principal) via oAuth2 Spring Security ?

comment configurer à la fois dans l'authentification mémoire et l'authentification jdbc dans Spring Security

Ajout de plus d'un client au serveur d'authentification Spring OAuth2

Erreur d'authentification LDAP de Spring Security Active Directory

Authentification du client OAuth2 Open ID suivie des détails et des autorités de l'utilisateur LDAP

Spring OAuth2 et authentification / autorisation dans l'application AngularJS

L'authentification ne fonctionne pas dans Spring Boot 1.5.2 et Oauth2

Authentification de base Spring 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