Maison >développement back-end >tutoriel php >Manuel d'utilisation d'Apache Shiro (1) Introduction à l'architecture Shiro
Manuel d'utilisation d'Apache Shiro (1) Introduction à l'architecture Shiro
1. Qu'est-ce que Shiro
Apache Shiro est un framework de sécurité Java puissant et facile à utiliser qui fournit l'authentification et l'autorisation. , cryptage et gestion de session et autres fonctions :
Authentification - identification de l'utilisateur, souvent appelée « connexion » de l'utilisateur
Autorisation - contrôle d'accès
Cryptage par mot de passe - protection ou masquage des données des regards indiscrets ; 🎜 > Gestion de session - État sensible au temps associé à chaque utilisateur.
Pour toute application, Shiro peut fournir des services complets de gestion de la sécurité. Et comparé à d’autres frameworks de sécurité, Shiro est beaucoup plus simple.
Tout d'abord, jetons un coup d'œil aux trois composants principaux de Shiro : Sujet, SecurityManager et Realms :
Le sujet représente les opérations de sécurité de l'utilisateur actuel, et SecurityManager gère les opérations de sécurité de tous les utilisateurs.
SecurityManager : C'est le cœur du framework Shiro, un mode Facade typique. Shiro gère les instances de composants internes via SecurityManager et fournit divers services pour la gestion de la sécurité via celui-ci.
Realm : Realm agit comme un « pont » ou un « connecteur » entre Shiro et les données de sécurité des applications. C'est-à-dire que lors de la vérification de l'authentification (connexion) et de l'autorisation (contrôle d'accès) sur un utilisateur, Shiro recherchera l'utilisateur et ses informations d'autorisation à partir du domaine configuré dans l'application.
En ce sens, Realm est essentiellement un DAO lié à la sécurité : il encapsule les détails de connexion de la source de données et fournit des données pertinentes à Shiro en cas de besoin. Lors de la configuration de Shiro, vous devez spécifier au moins un domaine pour l'authentification et/ou l'autorisation. Il est possible de configurer plusieurs Realms, mais au moins un est requis.
Shiro dispose d'un Realm intégré qui peut se connecter à un grand nombre de sources de données sécurisées (également appelées répertoires), telles que LDAP, des bases de données relationnelles (JDBC), des ressources de configuration de texte de type INI et des fichiers de propriétés, etc. Si le domaine par défaut ne répond pas à vos besoins, vous pouvez également connecter votre propre implémentation de domaine qui représente une source de données personnalisée.
Schéma d'architecture complet de Shiro :
Authentificateur : l'authentification est le processus de vérification de l'identité de l'utilisateur. Un exemple courant de ce processus est la combinaison familière « utilisateur/mot de passe ». Lorsque la plupart des utilisateurs se connectent à un système logiciel, ils fournissent généralement leur nom d'utilisateur (le principal) et le mot de passe qui les prend en charge (le certificat). Si le mot de passe (ou la représentation du mot de passe) stocké dans le système correspond à celui fourni par l'utilisateur, celui-ci est considéré comme authentifié.
Autorisateur : l'autorisation est essentiellement un contrôle d'accès : contrôler le contenu de l'application auquel les utilisateurs peuvent accéder, comme les ressources, les pages Web, etc.
SessionManager : dans le monde des frameworks de sécurité, Apache Shiro offre quelque chose d'unique : une utilisation cohérente de l'API de session au niveau de n'importe quelle application ou couche architecturale. Autrement dit, Shiro fournit un paradigme de programmation conversationnelle pour toute application – des petites applications back-end autonomes aux grandes applications Web en cluster. Cela signifie que les développeurs d'applications qui souhaitent utiliser des sessions ne sont pas obligés d'utiliser un servlet ou un conteneur EJB. Alternativement, si ces conteneurs sont utilisés, les développeurs peuvent désormais choisir d'utiliser une API de session cohérente sur n'importe quelle couche au lieu des mécanismes de servlet ou d'EJB.
CacheManager : fournit une prise en charge de la mise en cache pour d'autres composants de Shiro.