Sécurité du printemps - Spring Security
| Développeur (s) | 4 |
|---|---|
| Version stable | 5.2.1 / 4 novembre 2019 |
| Écrit en | Java |
| Système opérateur | Multiplateforme |
| Taper | sécurité du cadre d'application Web |
| Licence | Licence Apache 2.0 |
| Site Internet | projets |
Spring Security est un framework Java / Java EE qui fournit des fonctionnalités d' authentification , d' autorisation et d'autres fonctionnalités de sécurité pour les applications d'entreprise. Le projet a été lancé à la fin de 2003 sous le nom de `` Acegi Security '' (prononcé Ah-see-gee / ɑː s iː dʒ iː / , dont les lettres sont les premier, troisième, cinquième, septième et neuvième caractères de l'alphabet anglais, afin de prévenir les conflits de nom) par Ben Alex, avec elle publiquement publié sous la licence Apache dans Mars 2004. par la suite, Acegi a été incorporée au printemps portefeuille Spring Security, un sous-projet officiel du printemps. La première version publique sous le nouveau nom était Spring Security 2.0.0 en avril 2008, avec un support commercial et une formation disponibles auprès de SpringSource .
Flux d'authentification
Le diagramme 1 montre le flux de base d'une demande d'authentification à l'aide du système Spring Security. Il montre les différents filtres et comment ils interagissent depuis la demande initiale du navigateur jusqu'à une authentification réussie ou une erreur HTTP 403.
| Le navigateur soumet des " informations d'authentification " | |
| " Le mécanisme d'authentification " recueille les détails | |
| Une « demande d'authentification » objet est construit | |
| Demande d'authentification envoyée à un AuthenticationManager | |
| AuthenticationManager (il est responsable du passage des demandes à travers une chaîne de fournisseurs d' authentification) | |
| " Le fournisseur d'authentification " demandera à un UserDetailsService de fournir un objet UserDetails | |
| L' objet UserDetails résultant (qui contient également les GrantedAuthority [] s ) sera utilisé pour créer l' objet d' authentification entièrement rempli . | |
| Si le « mécanisme d'authentification » reçoit en retour l' objet d' authentification entièrement rempli , il jugera la demande valide, placera l' authentification dans SecurityContextHolder ; et faire réessayer la demande d'origine. Si, en revanche, AuthenticationProvider a rejeté la demande, le mécanisme d'authentification demandera à l'agent utilisateur de réessayer. |
|
| AbstractSecurityInterceptor autorise la requête régénérée et lève des exceptions Java. ( Demande à AccessDecisionManager de prendre une décision.) | |
| ExceptionTranslationFilter traduit les exceptions levées par AbstractSecurityInterceptor en codes d'erreur HTTP | |
| Code d'erreur 403 - si le principal a été authentifié et ne dispose donc simplement pas d'un accès suffisant Lancez un AuthenticationEntryPoint - si le principal n'a pas été authentifié, qui est un mécanisme d'authentification |
|
Principales fonctionnalités d'authentification
- LDAP (utilisant à la fois des stratégies de comparaison de mots de passe et de liaison) pour la centralisation des informations d'authentification.
- Capacités d'authentification unique à l'aide du service d'authentification central populaire .
- Service d'authentification et d'autorisation Java (JAAS) LoginModule, une méthode d'authentification basée sur des normes utilisée dans Java. Notez que cette fonctionnalité n'est qu'une délégation à un module de connexion JAAS.
- Authentification d'accès de base telle que définie par RFC 1945 .
- Authentification d'accès Digest telle que définie par RFC 2617 et RFC 2069 .
- Présentation du certificat client X.509 via la norme Secure Sockets Layer .
- CA, Inc SiteMinder pour l'authentification (un produit de gestion des accès commerciaux populaire).
- Prise en charge de type Su (Unix) pour le changement d'identité principale via une connexion HTTP ou HTTPS .
- Remplacement d'exécution, qui permet à une opération de prendre une identité de sécurité différente.
- Authentification anonyme, ce qui signifie que même les principaux non authentifiés se voient attribuer une identité de sécurité.
- Prise en charge de l'adaptateur de conteneur (domaine personnalisé) pour Apache Tomcat , Resin , JBoss et Jetty (serveur Web) .
- Windows NTLM pour activer l'intégration du navigateur (expérimental).
- Authentification par formulaire Web , similaire à la spécification du conteneur de servlet .
- Support "Remember-me" via les cookies HTTP .
- Prise en charge des sessions simultanées, qui limite le nombre de connexions simultanées autorisées par un principal.
- Prise en charge complète de la personnalisation et du branchement des implémentations d'authentification personnalisées.
Principales fonctionnalités d'autorisation
- Autorisation d'invocation de méthode AspectJ .
- Autorisation HTTP des URL de requêtes Web à l' aide d'un choix de chemins Apache Ant ou d' expressions régulières .
Fonctionnalités de sécurité basées sur une instance
- Utilisé pour spécifier les listes de contrôle d'accès applicables aux objets de domaine .
- Spring Security propose un référentiel pour stocker, récupérer et modifier les ACL dans une base de données .
- Des fonctionnalités d' autorisation sont fournies pour appliquer les stratégies avant et après les appels de méthode.
Autres caractéristiques
- Localisation du logiciel afin que les messages de l' interface utilisateur puissent être dans n'importe quelle langue.
- Sécurité du canal, pour basculer automatiquement entre HTTP et HTTPS en respectant des règles particulières.
- Mise en cache dans toutes les zones du framework touchant la base de données.
- Publication de messages pour faciliter la programmation événementielle .
- Prise en charge de la réalisation de tests d'intégration via JUnit .
- Spring Security lui-même propose des tests d'isolement JUnit complets.
- Plusieurs exemples d'applications, des JavaDocs détaillés et un guide de référence.
- Indépendance du framework Web.
Communiqués
- 2.0.0 (avril 2008)
- 3.0.0 (décembre 2009)
- 3.1.0 (7 décembre 2011)
- 3.1.2 (10 août 2012)
- 3.2.0 (16 décembre 2013)
- 4.0.0 (26 mars 2015)
- 4.1.3 (24 août 2016)
- 4.2.0 (10 novembre 2016)
- 3.2.10, 4.1.4, 4.2.1 (22 décembre 2016)
- 4.2.2 (2 mars 2017)
- 4.2.3 (8 juin 2017)
- 5.0.0 (28 novembre 2017)
- 5.0.8, 4.2.8 (11 septembre 2018)
- 5.1.0 GA (27 septembre 2018)
- 5.1.1, 5.0.9, 4.2.9 (16 octobre 2018)
- 5.1.2, 5.0.10, 4.2.10 (29 novembre 2018)
- 5.1.3, 5.0.11, 4.2.11 (11 janvier 2019)
- 5.1.4 (14 février 2019)
- 5.1.5, 5.0.12, 4.2.12 (3 avril 2019)