Autorisation incrémentielle pour la connexion à Google OAuth2 avec Spring Security

Tamanjit bindra

Je me demandais s'il existe un moyen d'autoriser de manière incrémentielle avec Spring Security (comme mentionné ici )

Par défaut, Spring Security fournit un accès de base au profil lors de l'utilisation de la vérification OAuth du signe Google. Ce flux est correct. Je voudrais cependant demander des portées supplémentaires (lecture de Gmail, lecture de calendrier, etc.) sur certains points de terminaison d'URL.

J'ai déjà essayé d'utiliser la propriété @PreAuthorize sur le point de terminaison avec l'activation @EnableGlobalMethodSecurity(prePostEnabled = true)comme dans le code.

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MethodSecurityConfiguration extends GlobalMethodSecurityConfiguration {

    @Override

protected MethodSecurityExpressionHandler createExpressionHandler() {
    return new OAuth2MethodSecurityExpressionHandler();
}

}

Classe de configuration de sécurité:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

   @Override
   protected void configure(HttpSecurity http) throws Exception {
      http.authorizeRequests()
            .antMatchers("/", "/error", "/privacy", "/css/**", "/images/**", "/js/**", "/fonts/**")
            .permitAll().anyRequest().authenticated().and().oauth2Login().and().logout().logoutSuccessUrl("/");
    http.csrf().disable();
    http.headers().frameOptions().disable();

   }
}
Tamanjit bindra

J'ai trouvé une solution de contournement. J'ai implémenté un AccessDeniedHandler personnalisé. Recherchez l'exception et l'URL dont elle provient. Si l'URL est celle où une portée plus élevée est requise, je redirige la demande vers l'authentification Google avec des portées supplémentaires ajoutées.

C'est une solution de contournement, la vraie solution est toujours ouverte.

public class CustomAccessDeniedHandler implements AccessDeniedHandler {

@Value("${spring.security.oauth2.client.registration.google.client-id}")
private String clientId;

@Override
public void handle(HttpServletRequest request, HttpServletResponse response,
        AccessDeniedException accessDeniedException) throws IOException, ServletException {
    if (accessDeniedException.getMessage().equalsIgnoreCase("Insufficient scope for this resource")) {
        response.sendRedirect("https://accounts.google.com/o/oauth2/v2/auth?client_id=" + clientId
                        + "&response_type=code&scope=https://www.googleapis.com/auth/gmail.readonly&redirect_uri="
                        + request.getServerName() + "/xyz");
    }
}

}

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

Google OAuth 2.0 - Autorisation incrémentielle avec accès hors connexion

Connexion Spring Security OAuth2 avec Google

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

Spring Security OAuth2 avec redirection JWT vers la page de connexion

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

Le facteur n'a pas pu terminer la connexion Oauth2 pour Google OAuth2

Spring Security ne fonctionne pas avec l'autorisation: jeton de support d'OAuth2

Spring Security OAuth2 prend-il en charge le flux de code d'autorisation avec PKCE pour les clients de navigateur (angulaire)?

API Spring RESTful sécurisée avec serveur d'autorisation Google OAuth2

Créez un utilisateur personnalisé avec des données OAuth2 à partir de l'autorisation avec Spring Security

La déconnexion ne fonctionne pas correctement dans Spring Security OAuth2

Spring Security Oauth2 et configuration de la connexion par formulaire

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

Quelle est la meilleure pratique pour utiliser Oauth2, React, Node.js et Passport.js pour authentifier l'utilisateur avec le bouton de connexion Google?

Spring Security pour valider la connexion RestAPI

Spring Boot avec Security OAuth2 - Comment utiliser le serveur de ressources avec le formulaire de connexion Web?

Autorisation non interactive avec Google OAuth2

Spring security oauth2 modify response body connexion

Spring Security OAuth2: Comment fournir deux liens de connexion séparés pour deux types d'utilisateurs?

Comment utiliser Spring Security pour plusieurs scénarios de connexion avec la configuration Java?

Spring Security - UserDetailsService pour la mise en œuvre d'oAuth2 ?

Comment obtenir un jeton d'accès juste après la connexion réussieHandler dans Spring Oauth2 Security?

Redirection de connexion Spring Security OAuth2 vers la page d'erreur malgré le succès

Spring Security Oauth2 pour le site Web Spring

Empêcher la redirection vers la connexion pour Spring Security

Mettre à jour avec la colonne incrémentielle

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

Spring Security ne lance pas d'erreur lorsque l'en-tête d'autorisation n'est pas présent après la connexion avec AngularJS

Comment fonctionne la redirection de connexion Spring Oauth2?

TOP liste

  1. 1

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

  2. 2

    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

  3. 3

    Microsoft.WebApplication.targets

  4. 4

    knn classification 10 plis de l'outil et du tri

  5. 5

    Quelle est la relation entre le modèle et le tableau ? C'est compliqué

  6. 6

    Créer un système Buzzer à l'aide de python

  7. 7

    Fonction de puissance en Java

  8. 8

    opérations en virgule flottante dans go

  9. 9

    Comment définir la couleur de l'intersection dans un diagramme de Venn?

  10. 10

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  11. 11

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  12. 12

    AutoMapper.Collection.EFCore - Erreur générée lors de la configuration

  13. 13

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  14. 14

    Comment remplir les valeurs manquantes avec plusieurs colonnes dans R

  15. 15

    Comment puis-je ajouter un UIView sous mon contrôleur de barre d'onglets par programme?

  16. 16

    Yat-il un référentiel maven application Java à démarrer rapidement 11

  17. 17

    Comment rechercher des éléments dans une ArrayList? - Java

  18. 18

    Comment utiliser HttpClient avec TOUT cert ssl, quelle que soit la « mauvaise » est

  19. 19

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  20. 20

    Sélectionnez le bouton radio sur la saisie de texte

  21. 21

    Placez le modeBar en haut au centre à l'aide de plotly.js

chaudétiquette

Archive