Spring Security Flashcards
Quelles sont les principales options de Spring Security pour stocker les utilisateurs ?
Le service UserDetails peut être configuré pour travailler:
- In-Memory
- JDBC
- LDAP
- Custom
Quel est le principe d’une attaque CSRF ?
Soumettre une requête non-voulue par l’utilisateur (qui croit par exemple être sur un site qu’il connait bien) à une application sur laquelle l’utilsateur a certains privilèges d’accès.
Comment se protéger d’une attaque CSRF ?
- Le serveur génère un token CSRF
- Ce token est inclus (caché) dans les formulaires de l’application
- Il est renvoyé au serveur lors de la soumission du formulaire
- Le serveur n’accepte la requête que si le token transmis correspond à celui qu’il a généré.
Citer différents moyens d’obtenir l’utilisateur courant avec Spring Security.
- Quel que soit l’endroit, on peut utiliser SecurityContextHolder.getContext() pour obtenir une Authentication
- Dans un contrôleur, on peut annoter un paramètre de méthode avec @AuthenticationPrincipal
Quel est le principe de l’authentification avec Spring Security ?
- Principal: identifie l’utilsateur
- Credentials: souvent un mot de passe
- Authorities; permissions de haut niveau accordées à l’utilisateur (rôles, scopes)
Comment configurer Spring Security ?
- Créer une classe qui implémente WebSecurityConfigurer (le plus simple est d’étendre WebSecurityConfigurerAdapter)
- L’annoter avec @EnableWebSecurity
- Surcharger au besoin les méthodes:
- configure(WebSecurity): configuration de la chaine de filtres de sécurité
- configure(HttpSecurity): comment les requêtes sont sécurisées par les intercepteurs
- configure(AuthenticationManagerBuilder): configuration du service UserDetails
Comment sécuriser les méthodes avec Spring Security ?
- Sur la base de rôles:
- @Secured (Spring)
- @RolesAllowed (JSR250)
- Sur la base de l’évaluation d’une expression:
- @PreAuthorize / @PostAuthorize: restreint l’accès (sur les entrées ou les sorties, avant ou après l’invocation)
- @PreFilter / @PostFilter: filtre les entrées ou les sorties de la méthode
Expliquer le but de TLS
- Etablir une connexion chiffrée de manière symétrique
- Garantir l’identité des différentes parties
Expliquer le chiffrement symétrique
Qu’esr-ce-qu-un certificat?
- Un fichier texte
- Lisible par des outils tels que OpenSSL
- Contenant des informations telles que
- autorité de confiance
- validité
- propriétaire
- clé publique
Expliquer le chiffrement asymétrique
- On génère une paire clé publique / privée
- On chiffre le message avec la clé publique
- Il faut la clé privée pour déchiffrer
Décrire le handshake TLS
- Client Hello
- Server Hello
- Client key exchange & client finish
Quels sont les deux objectifs de la sécurité ?
- Authentification
- Autorisation / Contrôle d’accès
Quel est le principe de l’authentification avec Spring Security ?
La stratégie AuthenticationManager prend le principal Authentication en paramètre et peut retourner
- Un objet Authentication en cas de succès
- Une exception AuthenticationException en cas d’échec
- null en cas de doute