Actualmente estamos utilizando Apache Shiro para nuestras necesidades de autenticación de usuarios. Tenemos autorización dinámica \ necesidades de autenticación, en algunos casos los usuarios se autenticarán con Active Directory mientras que otros se autenticarán con JDBC, pero todos los usuarios se autorizarán con JDBC.
Shiro ha demostrado estar a la altura, pero no bien. Funciona, pero solo a veces. Los reinos programáticos que he creado no parecen funcionar de la misma manera cada vez. A veces, al intentar inicios de sesión varias veces fallará, solo para tener éxito. Esta es exactamente la misma solicitud con los mismos datos. La depuración muestra que a veces simplemente no llama a las funciones necesarias para obtener los datos de autenticación o autorización. El reinicio de la instancia generalmente solucionará esto, pero solo por un tiempo. También parece tener problemas serios con múltiples aplicaciones shiro existentes en la misma instancia de Glassfish.
Como tal, Shiro no parece ser una opción sostenible, especialmente dada la poca documentación que existe para ello. Ya estoy anulando los métodos de Shiro para decirle exactamente cómo obtener los datos, así que me gustaría simplemente codificar mis propias clases de autenticación de usuarios de Java.
Actualmente, el mejor argumento que he escuchado en contra de esto es que un sistema con código personalizado no será tan seguro como el estándar de la industria. Sin embargo, por lo que he leído en línea y me han enseñado en clase, la mayoría de los intentos de piratería se centran en obtener acceso a los nombres de usuario y contraseñas, o en averiguar cómo enviar un código Rouge al sistema. La mayoría de los métodos no infringen el software en sí; básicamente, solo verifica los datos que se proporcionan y, siempre que todas las entradas estén saneadas, el software de autenticación del usuario no suele ser el problema. ¿Es esa evaluación precisa?
Además, ¿hay algún error que deba tener en cuenta? Entiendo que hay otras opciones como Spring Security o JAAS, pero como ya tengo esencialmente el sistema que necesito tener integrado en Shiro y solo tengo que eliminarlo de ese software, parece que la mejor opción sería utilizarlo en este momento. el ciclo de desarrollo.