-
Directorio
-
Composición: cuatro componentes principales, soporte funcional
-
Proceso de verificación de Shiro
-
Configuracion y ejemplos
Las cuatro funciones principales de Shiro también se denominan "las cuatro piedras angulares de la aplicación Shiro":
1. Autenticación: a veces también se denomina "inicio de sesión" (autenticación).
Esto es un acto para probar que el usuario es quien dice ser.
2. Autorización: El proceso de control de acceso, es decir, el absoluto "quién" accede a "qué", es decir, autorización.
3. Gestión de la sesión: La gestión de la sesión:
gestione las sesiones específicas del usuario, incluso en aplicaciones no web o EJB, se explicará en detalle más adelante.
4. Criptografía: mantenga los datos seguros utilizando algoritmos de cifrado.
1. Soporte web : la API compatible con web de Shiro puede ayudar fácilmente a proteger las aplicaciones web.
2. Almacenamiento en caché: el almacenamiento en caché es el ciudadano de primer nivel en Apache Shiro para garantizar un funcionamiento seguro y rápido.
3. Concurrencia: Apache Shiro utiliza sus funciones de concurrencia para admitir aplicaciones de subprocesos múltiples.
4. Pruebas: la existencia de soporte de pruebas para ayudarlo a escribir pruebas unitarias y pruebas de integración, y garantizar que pueda estar tan seguro como se esperaba.
5. "Ejecutar como": una función que permite al usuario asumir la identidad de otro usuario (si está permitido), a veces útil en la gestión de scripts.
6. "Recordarme": recuerda la identidad del usuario en la sesión, por lo que solo necesita iniciar sesión cuando sea forzado.
El primer paso es obtener el tema de verificación. La definición de este tema se refiere a:
Asunto es un término de seguridad , que básicamente significa
"la vista de seguridad específica del usuario que se está ejecutando actualmente". No se llama "Usuario" porque la palabra "Usuario" generalmente se asocia con humanos. En el mundo de la seguridad, el término "Sujeto" puede expresarse como un ser humano, y puede ser un proceso de un tercero, un trabajo temporal, una cuenta de demonio o algo similar. Simplemente significa "esta cosa está interactuando actualmente con el software" . Para la mayoría de los propósitos, puede pensar en Asunto como el concepto de "Usuario" de Shiro
/*获取验证的主体*/
Subject subject = SecurityUtils.getSubject();
/*获取Session*/
Session session = subject.getSession();
if(!subject.isAuthenticated()){ //验证通过
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("username","password");
/*设置记住账号*/
usernamePasswordToken.setRememberMe(true);
/*登录方法*/
subject.login(usernamePasswordToken);
}
/*退出登录*/
subject.logout();
Nota: La sesión es una instancia específica en Shiro, que es equivalente a HttpSession en el entorno web; se puede usar en un entorno que no es web y el alcance de uso no se limita a la capa web como HttpSession.
subject.login (usernamePasswordToken); se pueden generar las excepciones anteriores. Estas excepciones deben capturarse y procesarse al mismo tiempo.
Excepciones comunes:
AuthenticationException contiene las siguientes subclases:
- CredentitalsException Credencial excepción
IncorrentCredentialsException credenciales incorrectas
ExpiredCredentialsException Credenciales caducadas
- AccountException
ConcurrentAccessException Excepción de acceso concurrente (se produce cuando varios usuarios inician sesión al mismo tiempo)
UnknownAccountException Cuenta desconocida
ExcessiveAttemptsException El número de autenticaciones excede el límite
DisabledAccountException Cuenta deshabilitada
LockedAccountException La cuenta está bloqueada
UnsupportedTokenException Token no compatible utilizado
El enfoque más seguro de Handy Hint es dar mensajes de falla de inicio de sesión ordinarios a los usuarios , porque, por supuesto, no desea ayudar a los atacantes que intentan ingresar a su sistema.
1.UnknownAccountException cuenta desconocida
Mensaje de aviso: la cuenta no existe o la contraseña de la cuenta es inconsistente
2. IncorrentCredentialsException error de contraseña
3. La cuenta LockedAccountException está bloqueada
Recientemente, estoy trabajando en un sistema de blog de arranque de Spring. El control de permisos utiliza el marco de trabajo de Shiro. Se han mejorado las funciones detrás y se lanzará mi github. Espero ayudar a los lectores.
Para aplicaciones avanzadas, vea la próxima edición: