Authentification et autorisation unifiées de Shiro
Shiro est un cadre d'autorisation Java simple et facile à utiliser sous Apache Pour les applications uniques, Shiro peut parfaitement et rapidement répondre aux exigences d'autorisation. le premier choix des développeurs lorsqu'ils travaillent sur des projets.
Cependant, si vous devez créer une deuxième, troisième ou nième application qui nécessite également la même authentification et autorisation, vous devrez peut-être étendre Shiro ou intégrer d'autres frameworks. Cela répond très bien à vos besoins.
Comment Shiro effectue l'authentification et l'autorisation
Shiro lui-même ne vous aide pas à obtenir l'authentification et l'autorisation, mais Shiro définit très bien certains concepts liés aux autorisations, vous permettant de réaliser des implémentations spécifiques
Authentification
Dans Shiro, l'authentification est généralement subject.login(token), le sujet représente un utilisateur et le jeton représente les informations d'autorisation soumises par un utilisateur lors de la demande d'autorisation, via AuthenticatingRealm .doGetAuthenticationInfo( ) obtient des informations sur le sujet actuel, telles que les principaux, les informations d'identification, et vérifie le jeton soumis. Si la connexion réussit, enregistrez l'utilisateur actuellement connecté
Autorisation
. dans Shiro, le contrôle des autorisations ressemble généralement à @RequiresPermissions. Lorsqu'un utilisateur accède à une ressource protégée, Shiro utilisera AuthorizingRealm.doGetAuthorizationInfo() pour obtenir les autorisations de l'utilisateur auprès des principaux du sujet actuellement authentifié afin de déterminer si l'utilisateur peut accéder à la ressource <.>
Dans Shiro, les deux choses ci-dessus sont accomplies en implémentant Realm. Lorsque vous avez une seule application, il est très simple de compléter l'authentification et l'autorisation de l'application.
Mais que devez-vous faire lorsque vous avez plusieurs applications et que vous devez réutiliser le même ensemble d'utilisateurs et d'informations d'autorisation ? Vous pouvez réutiliser Realm et les autorisations des utilisateurs sont dans la même base de données. C'est possible, mais le couplage. est trop élevé et différentes applications doivent accéder à la même source de données ; ou le DAO lié aux autorisations des utilisateurs peut être supprimé et utilisé comme un appel RPC ou Rest, ce qui peut également être implémenté, mais un meilleur moyen consiste à séparer l'intégralité de l'authentification ; et autorisation, en tant que service d'authentification et d'autorisation seul
Authentification et autorisation unifiées basées sur Shiro
Afin d'obtenir une authentification et une autorisation unifiées, Shiro dispose de CasFilter, qui peut intégrer CAS, mais CAS est un autre ensemble de cadres, qui est plus important, il y a un coût d'apprentissage distinct, voici donc un service d'authentification et d'autorisation plus simple, léger et facile à utiliser, basé sur Shiro shiro-uaa
Authentification et processus d'autorisation
- L'utilisateur demande des ressources protégées Resource Server
- Resource Server détermine si l'utilisateur est connecté
- S'il n'est pas connecté, le serveur de ressources guide l'utilisateur vers le serveur UAA pour se connecter
- L'utilisateur se connecte au serveur UAA. Si la connexion réussit, le serveur UAA revient. le code à l'utilisateur et guide l'utilisateur vers le serveur de ressources précédemment visité
- Le serveur de ressources utilise le code pour obtenir un jeton d'accès du serveur UAA. Le jeton contient des informations d'autorisation de l'utilisateur
<.>
Le serveur de ressources vérifie si le accessToken est légal. S'il est légal, enregistre les informations utilisateur dans le serveur de ressources Comme indiqué ci-dessous :
Utiliser
Citer maven Implémentez votre propre connexion
serveur de ressources
Citer maven
Identique à Shiro, utilisez des annotations pertinentes pour le contrôle des autorisations
Basique Il peut être utilisé prêt à l'emploi Actuellement, le serveur d'authentification n'est fourni qu'en tant que tel. un package jar. Vous devez implémenter vous-même la logique de connexion. Il y aura des services déployables à l'avenir
Shiro-uaa peut être trouvé dans l'adresse du projet pour des instructions spécifiques
Recommandations associées :
Explication détaillée de la mise en œuvre de l'autorisation Shiro
Manuel d'utilisation d'Apache Shiro (1) Introduction à l'architecture Shiro
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!