Apache Shiro-Benutzerhandbuch (1) Einführung in die Shiro-Architektur
1. Was ist Shiro
Apache Shiro ist ein leistungsstarkes und benutzerfreundliches Java-Sicherheitsframework, das Authentifizierung und Autorisierung bietet , Verschlüsselung und Sitzungsverwaltung und andere Funktionen:
Authentifizierung – Benutzeridentifikation, oft als „Benutzeranmeldung“ bezeichnet;
Passwortverschlüsselung – Schutz oder Verstecken von Daten vor neugierigen Blicken Sitzungsverwaltung – Zeitkritischer Status, der jedem Benutzer zugeordnet ist.
Für jede Anwendung kann Shiro umfassende Sicherheitsmanagementdienste anbieten. Und im Vergleich zu anderen Sicherheits-Frameworks ist Shiro viel einfacher.
2. Einführung in die Architektur von Shiro
Werfen wir zunächst einen Blick auf die drei Kernkomponenten von Shiro: Subject, SecurityManager und Realms:
Betreff: der „aktuelle Betriebsbenutzer“. In Shiro bezieht sich der Begriff „Subjekt“ jedoch nicht nur auf Personen, sondern kann auch Prozesse von Drittanbietern, Hintergrundkonten (Daemon-Konten) oder ähnliche Dinge umfassen. Es bedeutet einfach „womit die Software gerade interagiert“. Aber für die meisten Zwecke und Verwendungszwecke kann man es sich als Shiros „Benutzer“-Konzept vorstellen.
Betreff stellt die Sicherheitsvorgänge des aktuellen Benutzers dar und SecurityManager verwaltet die Sicherheitsvorgänge aller Benutzer.
SecurityManager: Es ist der Kern des Shiro-Frameworks, ein typischer Fassadenmodus, der interne Komponenteninstanzen über SecurityManager verwaltet und darüber verschiedene Dienste für das Sicherheitsmanagement bereitstellt.
Realm: Realm fungiert als „Brücke“ oder „Verbindungsstück“ zwischen Shiro und Anwendungssicherheitsdaten. Das heißt, wenn Shiro die Authentifizierung (Anmeldung) und Autorisierung (Zugriffskontrolle) für einen Benutzer durchführt, sucht Shiro nach dem Benutzer und seinen Berechtigungsinformationen im in der Anwendung konfigurierten Bereich.
In diesem Sinne ist Realm im Wesentlichen ein sicherheitsbezogenes DAO: Es kapselt die Verbindungsdetails der Datenquelle und stellt Shiro bei Bedarf relevante Daten zur Verfügung. Bei der Konfiguration von Shiro müssen Sie mindestens einen Realm für die Authentifizierung und/oder Autorisierung angeben. Es ist möglich, mehrere Realms zu konfigurieren, es ist jedoch mindestens einer erforderlich.
Shiro verfügt über einen integrierten Realm, der eine Verbindung zu einer großen Anzahl sicherer Datenquellen (auch als Verzeichnisse bekannt) herstellen kann, wie z. B. LDAP, relationale Datenbanken (JDBC), INI-ähnliche Textkonfigurationsressourcen und Eigenschaftendateien. usw. Wenn der Standard-Realm Ihren Anforderungen nicht entspricht, können Sie auch Ihre eigene Realm-Implementierung einbinden, die eine benutzerdefinierte Datenquelle darstellt.
Shiro vollständiges Architekturdiagramm:
Zusätzlich zu den drei oben genannten Kernkomponenten Subject, SecurityManager und Realm umfassen Shiros Hauptkomponenten auch:
Authentifikator: Bei der Authentifizierung handelt es sich um den Prozess der Überprüfung der Benutzeridentität. Ein häufiges Beispiel für diesen Vorgang ist die bekannte Kombination „Benutzer/Passwort“. Wenn sich die meisten Benutzer bei einem Softwaresystem anmelden, geben sie normalerweise ihren Benutzernamen (den Prinzipal) und das zugehörige Passwort (das Zertifikat) an. Wenn das im System gespeicherte Passwort (oder die Passwortdarstellung) mit dem vom Benutzer angegebenen übereinstimmt, gelten sie als authentifiziert.
Autorisierer: Autorisierung ist im Wesentlichen eine Zugriffskontrolle – sie steuert, auf welche Inhalte in der Anwendung Benutzer zugreifen können, z. B. Ressourcen, Webseiten usw.
SessionManager: In der Welt der Sicherheits-Frameworks bietet Apache Shiro etwas Einzigartiges: die konsistente Nutzung der Session-API auf jeder Anwendungs- oder Architekturebene. Das heißt, Shiro bietet ein Konversationsprogrammierungsparadigma für jede Anwendung – von kleinen eigenständigen Backend-Anwendungen bis hin zu großen geclusterten Webanwendungen. Dies bedeutet, dass Anwendungsentwickler, die Sitzungen verwenden möchten, nicht gezwungen sind, ein Servlet oder einen EJB-Container zu verwenden. Wenn diese Container verwendet werden, können Entwickler jetzt alternativ eine konsistente Sitzungs-API auf jeder Ebene anstelle von Servlet- oder EJB-Mechanismen verwenden.
CacheManager: Bietet Caching-Unterstützung für andere Komponenten von Shiro.
Das Obige ist der Inhalt des Apache Shiro-Benutzerhandbuchs (1) Einführung in die Shiro-Architektur. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php). .cn)!