Shiros einheitliche Authentifizierung und Autorisierung
Shiro ist ein einfaches und benutzerfreundliches Java-Berechtigungsframework unter Apache. Für einzelne Anwendungen kann Shiro die Berechtigungsanforderungen im Allgemeinen perfekt und schnell erfüllen die erste Wahl für Entwickler bei der Arbeit an Projekten.
Wenn Sie jedoch eine zweite, dritte oder n-te Anwendung erstellen müssen, die ebenfalls dieselbe Authentifizierung und Autorisierung erfordert, müssen Sie Shiro möglicherweise erweitern oder andere Frameworks integrieren. Es entspricht Ihren Anforderungen sehr gut.
Wie Shiro die Authentifizierung und Autorisierung durchführt
Shiro selbst hilft Ihnen nicht bei der Authentifizierung und Autorisierung, aber Shiro definiert einige Konzepte im Zusammenhang mit Berechtigungen sehr gut, sodass Sie bestimmte Implementierungen durchführen können
Authentifizierung
In Shiro ist der Abschluss der Authentifizierung im Allgemeinen subject.login(token), Subject stellt einen Benutzer dar und Token stellt die Autorisierungsinformationen dar, die übermittelt werden, wenn ein Benutzer eine Autorisierung anfordert, über AuthenticatingRealm .doGetAuthenticationInfo() ruft einige Informationen über den aktuellen Betreff ab, z. B. Principals und Anmeldeinformationen, und überprüft das übermittelte Token. Wenn die Anmeldung erfolgreich ist, speichern Sie den aktuell angemeldeten Benutzer
Autorisierung
Shiro, die Berechtigungskontrolle ähnelt im Allgemeinen @RequiresPermissions. Wenn ein Benutzer auf eine geschützte Ressource zugreift, verwendet Shiro AuthorizingRealm.doGetAuthorizationInfo(), um die Berechtigungen des Benutzers von den Prinzipalen des aktuell authentifizierten Subjekts abzurufen, um zu bestimmen, ob der Benutzer auf die Ressource zugreifen kann
In Shiro werden die beiden oben genannten Dinge durch die Implementierung von Realm erreicht. Wenn Sie eine einzelne Anwendung haben, ist es sehr einfach, die Authentifizierung und Autorisierung der Anwendung abzuschließen.
Aber was sollten Sie tun, wenn Sie mehrere Anwendungen haben und denselben Satz von Benutzern und Berechtigungsinformationen wiederverwenden müssen? Sie können Realm wiederverwenden und die Benutzerberechtigungen befinden sich in derselben Datenbank. Dies ist jedoch möglich ist zu hoch und verschiedene Anwendungen müssen auf dieselbe Datenquelle zugreifen. Alternativ kann das DAO für Benutzerberechtigungen entfernt und als RPC- oder Rest-Aufruf verwendet werden. Eine bessere Möglichkeit besteht jedoch darin, die gesamte Authentifizierung zu trennen und Autorisierung als reiner Authentifizierungs- und Autorisierungsdienst
Einheitliche Authentifizierung und Autorisierung basierend auf Shiro
Um eine einheitliche Authentifizierung und Autorisierung zu erreichen, verfügt Shiro über CasFilter, das CAS, aber CAS integrieren kann ist ein weiterer Satz von Frameworks, der wichtiger ist. Es fallen separate Lernkosten an. Daher handelt es sich hier um einen einfacheren, leichten und benutzerfreundlichen Shiro-basierten Authentifizierungs- und Autorisierungsdienst shiro-uaa
Authentifizierung und Autorisierungsprozess
Benutzer fordert geschützte Ressourcen an Ressourcenserver
Ressourcenserver ermittelt, ob der Benutzer angemeldet ist
Wenn der Benutzer nicht angemeldet ist, leitet Resource Server ihn zum UAA-Server weiter, um sich anzumelden.
Der Benutzer meldet sich beim UAA-Server an. Wenn die Anmeldung erfolgreich ist, kehrt der UAA-Server zurück Der Code wird an den Benutzer gesendet und zum zuvor besuchten Ressourcenserver weitergeleitet.
Der Ressourcenserver verwendet Code, um das Zugriffstoken vom UAA-Server abzurufen. Das Token enthält Benutzerautorisierungsinformationen.
Ressourcenserver überprüft, ob das AccessToken legal ist. Wenn es legal ist, speichert es die Benutzerinformationen im Ressourcenserver
Wie unten gezeigt:
Verwenden Sie
auth-server
Quote Maven
Implementieren Sie Ihr eigenes Login
Ressourcenserver
Quote Maven
Genau wie bei Shiro, verwenden Sie relevante Anmerkungen zur Berechtigungskontrolle
Grundlegend Kann sofort verwendet werden. Derzeit ist nur der Authentifizierungsserver verfügbar Als JAR-Paket müssen Sie die Anmeldelogik selbst implementieren.
Shiro-uaa finden Sie in der Projektadresse
Verwandte Empfehlungen:
Detaillierte Erläuterung der Shiro-Autorisierungsimplementierung
Das obige ist der detaillierte Inhalt vonEinführung in das Java Permission Framework: Shiros einheitliche Authentifizierung und Autorisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!