【Shiro】Uso básico

1. Preparación del entorno

1. Shiro no depende de contenedores, solo crea un proyecto maven directamente
2. Agregar dependencias
<dependencies>
     <dependency>
         <groupId>org.apache.shiro</groupId>
         <artifactId>shiro-core</artifactId>
     <version>1.9.0</version>
     </dependency>
     <dependency>
         <groupId>commons-logging</groupId>
         <artifactId>commons-logging</artifactId>
         <version>1.2</version>
     </dependency>
</dependencies>

2. archivo INI

Shiro obtiene información relacionada con los permisos a través de la base de datos o mediante el archivo de configuración ini.
1. Crear archivo ini

3. Autenticación de inicio de sesión

1. Concepto de autenticación de inicio de sesión
(1) Verificación de identidad: generalmente, es necesario proporcionar cierta información de identificación, como el ID de identidad, para indicar la identidad de la persona que inicia sesión.
correo electrónico, nombre de usuario/contraseña para acreditar.
(2) En shiro, los usuarios deben proporcionar principios (identidad) y credenciales (pruebas) a shiro.
Y la aplicación puede autenticar al usuario:
(3) Principales: Identidad, es decir, el atributo de identificación del sujeto, que puede ser cualquier atributo, como nombre de usuario, correo electrónico, etc., único
Eso es todo. Un principal puede tener varios principales, pero solo hay uno principal, generalmente nombre de usuario/
Correo electrónico/número de teléfono móvil.
(4) Credenciales: Pruebas/credenciales, es decir, valores de seguridad conocidos sólo por el sujeto, como contraseñas/certificados digitales, etc.
(5) La combinación más común de principales y credenciales es nombre de usuario/contraseña.
2. Proceso básico de autenticación de inicio de sesión
(1) Recopilar la identidad/credenciales del usuario, como nombre de usuario/contraseña
(2) Llame a Subject.login para iniciar sesión. Si falla, obtendrá la excepción de autenticación correspondiente.
Excepción, el usuario recibirá un mensaje de error basado en la excepción; de lo contrario, el inicio de sesión se realizará correctamente.
(3) Cree una clase Realm personalizada y herede la clase org.apache.shiro.realm.AuthenticatingRealm,
Implementar el método doGetAuthenticationInfo()
3. Ejemplo de autenticación de inicio de sesión
Cree una clase de prueba, obtenga el objeto de autenticación y realice la autenticación de inicio de sesión, de la siguiente manera:
4. Proceso de autenticación de identidad
(1) Primero llame a Subject.login (token) para iniciar sesión, que se delegará automáticamente a SecurityManager
(2) SecurityManager es responsable de la lógica de autenticación real; la delegará al Autenticador para la verificación de identidad
verificar;
(3) El autenticador es el autenticador real y el punto de entrada de autenticación central en la API de Shiro.
Puede personalizar su propia implementación aquí;
(4) El autenticador puede delegar la identidad de múltiples reinos en la estrategia de autenticación correspondiente.
Verificación, de forma predeterminada ModularRealmAuthenticator llamará a AuthenticationStrategy para múltiples dominios
Autenticación;
(5) El autenticador pasará el token correspondiente a Realm y obtendrá información de autenticación de Realm, como
Si no se devuelve/lanza ninguna excepción, la autenticación falló. Aquí se pueden configurar múltiples reinos, que estarán en el orden correspondiente.
y estrategias de acceso.

4. Rol y autorización

1. Concepto de autorización (1) Autorización , también llamada control de acceso, es controlar quién accede a qué recursos en la aplicación (como acceder a páginas/editar datos/
página
operaciones, etcétera). Varios objetos clave que deben entenderse en la autorización: Asunto, Recurso, Derechos
Permiso y rol.
(2) Asunto : El usuario que accede a la aplicación. El Asunto se utiliza para representar al usuario en Shiro . Sólo usuario
El acceso a los recursos correspondientes sólo se permite con autorización.
(3) Recurso : URL a la que los usuarios pueden acceder en la aplicación , como acceder a páginas JSP, ver/editar
Ciertos datos, el acceso a un método comercial, texto impreso, etc. son todos recursos. Los usuarios pueden acceder sólo después de la autorización.
(4) Permiso : La unidad de autorización atómica en la política de seguridad, a través de permisos podemos expresarla en la aplicación.
¿Tiene el usuario la autoridad para operar un determinado recurso? Es decir, los permisos indican si el usuario puede acceder a un determinado recurso en la aplicación , como por ejemplo: acceder
Solicite a la página de lista de usuarios que vea/agregue/modifique/elimine datos de usuario (es decir, muchas veces es CRUD (agregar, verificar, modificar, eliminar)).
control limitado), etc. El permiso representa si el usuario tiene derecho a operar un determinado recurso, es decir, el permiso de operación reflejado en un determinado recurso.
No permitido.
(5) Shiro admite permisos generales (como todos los permisos del módulo de usuario) y permisos específicos (los permisos para operar a un determinado usuario).
límite, es decir, nivel de instancia)
(6) Rol (rol) : una colección de permisos . Generalmente, a los usuarios se les darán roles en lugar de permisos, es decir, los usuarios pueden
Tener un conjunto de permisos facilita la concesión de permisos. Los ejemplos típicos incluyen: gerente de proyecto, director técnico, CTO, ingeniero de desarrollo.
Los ingenieros, etc., son todos roles y diferentes roles tienen diferentes conjuntos de permisos.
2. Método de autorización
(1) Programación: se completa escribiendo el bloque de código de autorización if/else
(2) Tipo de anotación: Esto se completa colocando las anotaciones correspondientes en el método Java ejecutado, si no hay permiso, se lanzará la excepción correspondiente.
a menudo

 

(3) Etiqueta JSP/GSP: Completada a través de la etiqueta correspondiente en la página JSP/GSP 

 

3. Proceso de autorización
(1) Primero llame a la interfaz Subject.isPermitted*/hasRole*, que se delegará a SecurityManager, y
SecurityManager luego delegará al Autorizador;
(2) El autorizador es el autorizador real. Si llama a isPermitted ("usuario: vista"), primero pasará
Convierta la cadena en la instancia de permiso correspondiente a través del solucionador de permisos;
(3) Antes de la autorización, llamará al Reino correspondiente para obtener el rol/permiso correspondiente del Sujeto para coincidir con el entrante
roles/permisos;
(4) El Autorizador determinará si el rol/permiso del Reino coincide con el entrante. Si hay varios Reinos, delegará
Realice un juicio de bucle en ModularRealmAuthorizer. Si coincide con isPermitted*/hasRole*, devolverá
verdadero; de lo contrario, se devuelve falso para indicar un error de autorización.

 

4. Instancia de autorización
(1) Obtener información sobre el rol

 

(2) Determinar la información del permiso 

5. Cifrado Shiro

En el desarrollo real del sistema, es necesario cifrar cierta información confidencial, como las contraseñas de los usuarios. Shiro tiene muchas cosas incorporadas.
Algoritmos de cifrado de uso común, como el cifrado MD5. Shiro facilita el uso del cifrado de mensajes.
1. Utilice Shiro para cifrar contraseñas

6. Autenticación de inicio de sesión personalizada de Shiro

La autenticación de inicio de sesión predeterminada de Shiro es sin cifrado. Si desea implementar la autenticación cifrada, debe personalizar la autenticación de inicio de sesión.
Reino personalizado.
1. Autenticación de inicio de sesión personalizada

2. Agregue información de configuración en shiro.ini

Supongo que te gusta

Origin blog.csdn.net/weixin_45481821/article/details/132926900
Recomendado
Clasificación