sirve que para example ejemplo definicion java security spring-security shiro

que - radio button java eclipse



Marco de seguridad Java de alto nivel (4)

¿Qué marco de seguridad usas en tus proyectos Java?

Usé Spring Security y Apache Shiro y ambos se ven inmaduros.

Fallas de seguridad de primavera:

  1. no hay soporte nativo para permisos;
  2. sin capacidad de uso explícito en código Java (a veces es necesario);
  3. demasiado enfocado en aplicaciones web clásicas (no AJAX).

Las fallas de Apache Shiro:

  1. errores en la versión final (como el problema con la integración de Spring);
  2. no hay soporte para OpenID y algunas otras tecnologías ampliamente utilizadas;
  3. Problemas de rendimiento informados.

También hay falta de documentación para ambos.

¿Tal vez la mayoría de los proyectos reales desarrollan sus propios marcos de seguridad?


Andrey, creo que esta respuesta llega demasiado tarde para serte útil; está destinado a aquellos que aterrizan en este hilo más adelante y espero que les sirva de ayuda.

Mi compañía lanzó recientemente como código abierto, OACC , un marco de seguridad de aplicaciones Java avanzado. OACC está diseñado para sistemas que requieren una granularidad de seguridad de nivel de objeto.

OACC proporciona una API de alto rendimiento que proporciona servicios de autorización basados ​​en permisos . En pocas palabras, OACC le permite a su aplicación hacer cumplir la seguridad respondiendo a la pregunta: ¿Se le permite a la entidad ''A'' realizar la acción ''p'' en la entidad ''B''?

Una de las abstracciones clave en OACC es un recurso . Un recurso sirve como el marcador de posición en OACC para el objeto en el dominio de la aplicación que necesita ser protegido. Tanto los actores (p. Ej., Usuarios, procesos) como los objetos que se están protegiendo (p. Ej., Documentos, servidores) se representan como recursos en OACC. Los objetos de dominio de la aplicación que son actores o están protegidos, simplemente almacenan el ID de recurso en el recurso asociado.

La abstracción de recursos permite que OACC, a diferencia de otros marcos de seguridad importantes, proporcione una API enriquecida que administra los permisos entre recursos. OACC mantiene relaciones de seguridad en tablas RDBMS (actualmente se admiten DB2, Oracle, MS-SQLServer y PostgreSQL).

Para obtener más información, visite el sitio web del proyecto: OACC


En cuanto a Apache Shiro:

No estoy seguro de por qué has enumerado las cosas que hiciste:

  1. Cada proyecto en el mundo ha liberado errores, sin duda. Sin embargo, la clave principal aquí es que el equipo de Shiro responde y los arregla lo antes posible. Esto no es algo para evaluar un marco, de lo contrario, eliminarías todos los marcos, incluidos los que escribas tú mismo.
  2. El soporte de OpenID se lanzará en breve en Shiro 1.2, ¿quizás un mes fuera?
  3. ¿Qué problemas de rendimiento? Nadie ha informado nunca problemas de rendimiento a la lista de desarrolladores, especialmente porque el soporte de almacenamiento en caché en Shiro es amplio y de primera clase. Sin aclaraciones ni referencias, esto se presenta como FUD.
  4. La documentación ahora es realmente buena en realidad, una de las mejores en Open Source que he visto últimamente (fue revisada hace 2 semanas). ¿Tiene ejemplos específicos de dónde se queda corto para usted?

Me encantaría ayudar, pero sus inquietudes son generalizaciones que no están respaldadas por referencias o ejemplos concretos. ¿Quizás podría representar cosas específicas que su proyecto necesita y que no ha logrado hasta ahora?

Apache Shiro sigue siendo el marco de seguridad más flexible y fácil de entender para los lenguajes de Java y JVM que existen. Dudo que lo encuentre mejor.

Pero, sobre todo, y lo digo con toda sinceridad, no escriba su propio marco de seguridad a menos que piense dedicarle una cantidad de tiempo ridícula . Casi todas las compañías que he visto que intentan hacer esto fracasan miserablemente. Es muy difícil hacer lo correcto (y seguro). Confía en mí: después de escribir uno durante 8 años, eso es algo de lo que estoy absolutamente seguro :)

De todos modos, siéntase libre de unirse a la lista de usuarios de Shiro y de seguro encontrará que la comunidad está feliz y dispuesta a resolver cualquier problema que pueda tener. Descubrirá que nos ocupamos de las personas que hacen preguntas y hacemos todo lo posible para ayudar.

HTH!


Mis proyectos actuales utilizan SpringSecurity e involucran hacer las tres cosas que usted dice que son fallas en SpringSecurity:

  • Los proyectos implementan reglas de acceso específicas que van más allá de los ROLES simples, e involucran de manera diversa el estado de los objetos de dominio, los parámetros de solicitud adicionales, etc. Estos se implementan utilizando "objetos de política de acceso" personalizados que se llaman dentro de mis controladores MVC. Sin embargo, las fallas en la verificación de acceso se devuelven a SpringSecurity lanzando la excepción correspondiente. (Estos podrían haberse implementado como interceptores de nivel de método SpringSecurity estándar, pero las verificaciones generalmente implican examinar objetos de dominio).

  • Los proyectos son compatibles con el acceso web y AJAX, y tratan las fallas de acceso de manera diferente para los dos casos. Esto se hace escribiendo algunos componentes de punto de entrada de autenticación personalizados para SpringSecurity que eligen entre diferentes comportamientos de autenticación en función de la URL de solicitud, etc.

En otras palabras, se puede hacer ...

Dicho esto, estoy de acuerdo con usted en un par de puntos:

  • No es fácil conectar este tipo de cosas. Seguí corriendo hacia obstáculos cuando utilizaba el elemento <http> y su configurador asociado. Al igual que ... desea que use una versión diferente del componente X. Pero para hacer eso tiene que reemplazar Y, Z, P y Q también.

  • La documentación es realmente escasa, y no es útil si está tratando de hacer algo fuera de lo común.


Utilizamos una seguridad en capas en uno de nuestros proyectos. Las capas son las siguientes:

  1. HTTPS como protocolo (Apache-AJCConnectors-TomcatServlets)
  2. Solo objetos binarios transferidos entre cliente y servlet
  3. Los elementos individuales en los objetos pasados ​​(de cualquier manera) están encriptados
  4. La clave de cifrado es dinámica, se configura durante el protocolo de enlace inicial, válida para 1 sesión

Conceptualmente, la seguridad consiste en la clave de cifrado, el algoritmo de cifrado y los datos en los que se aplica. Nos aseguramos de que más de 1 de los 3 nunca se pase simultáneamente durante una comunicación. Espero que ayude. Saludos, - MS