pasos para manejo gridlayout ejemplos crear componentes componente caracteristicas java spring-security terminology security

java - para - ¿Cuál es el significado y la diferencia entre el sujeto, el usuario y el director?



swing containers (6)

En el contexto de los marcos de seguridad, algunos términos comúnmente ocurren sujeto , usuario y principal , de los cuales no he podido encontrar una definición clara y la diferencia entre ellos.

Entonces, ¿qué significan exactamente estos términos, y por qué son necesarias estas distinciones de tema y principal ?


Como T.Rob explicó, Subject es cualquier entidad que solicita acceso a un objeto. A partir de ese momento, he encontrado un comentario sobre el código javax.security.auth.Subject que he encontrado MUY útil y fácil de entender:

"Los sujetos pueden tener múltiples identidades. Cada identidad se representa como un Director dentro del Sujeto. Los directores simplemente unen nombres a un Sujeto. Por ejemplo, un Sujeto que sea una persona, Alicia, podría tener dos Principales: uno que se una" Alice Bar ", el nombre en su licencia de conducir, al Sujeto, y otro que une," 999-99-9999 ", el número en su tarjeta de identificación de estudiante, al Sujeto. Ambos Directores se refieren al mismo Sujeto a pesar de que cada tiene un nombre diferente ".

Espero eso ayude.


Creo que la terminología está tomada de JAAS .

Cuando una aplicación usa la autenticación JAAS para autenticar al usuario (u otra entidad, como un servicio), se crea un Asunto como resultado. El objetivo del Asunto es representar al usuario autenticado. Un sujeto se compone de un conjunto de directores , donde cada director representa una identidad para ese usuario. Por ejemplo, un Sujeto podría tener un nombre Principal ("Susan Smith") y un Número de Seguridad Social Principal ("987-65-4321"), por lo tanto, distinguir este Sujeto de otros Sujetos.



Este es el link para la explicación a continuación de Oracle JAVA SE Documentation.

Sujetos, principales, autenticación y credenciales Para autorizar el acceso a los recursos, las aplicaciones primero necesitan autenticar el origen de la solicitud. El marco JAAS define el término sujeto para representar el origen de una solicitud. Un sujeto puede ser cualquier entidad, como una persona o servicio. Un sujeto está representado por la clase javax.security.auth.Subject .

La autenticación representa el proceso por el cual se verifica la identidad de un sujeto, y debe realizarse de manera segura; de lo contrario, un perpetrador puede suplantar a otros para obtener acceso a un sistema. La autenticación generalmente involucra al sujeto que demuestra alguna forma de evidencia para probar su identidad. Tal evidencia puede ser información que el sujeto probablemente conocería o tendría (como una contraseña o huella dactilar), o puede ser información que solo el sujeto podría producir (como datos firmados usando una clave privada).

Una vez autenticado, un sujeto se rellena con identidades asociadas o principales (de tipo java.security.Principal ). Un sujeto puede tener muchos principios. Por ejemplo, una persona puede tener un nombre Principal ("John Doe") y un Director de SSN ("123-45-6789"), que lo distingue de otros Sujetos.

Además de los principales asociados, un sujeto puede poseer atributos relacionados con la seguridad, que se conocen como credenciales . Una credencial puede contener información utilizada para autenticar al sujeto a nuevos servicios. Dichas credenciales incluyen contraseñas, tickets Kerberos y certificados de clave pública. Las credenciales también pueden contener datos que permitan al sujeto realizar ciertas actividades. Las claves criptográficas, por ejemplo, representan credenciales que permiten al sujeto firmar o encriptar datos. Las clases de credenciales públicas y privadas no son parte de la API central de J2SE. Cualquier clase, por lo tanto, puede representar una credencial.


Estos son jerárquicos en la forma en que el género, la especie y el individuo son jerárquicos.

  • Asunto : en un contexto de seguridad, un sujeto es cualquier entidad que solicita acceso a un objeto . Estos son términos genéricos que se utilizan para designar la cosa que solicita el acceso y el objeto de la solicitud. Cuando inicia sesión en una aplicación, usted es el sujeto y la aplicación es el objeto. Cuando alguien llama a su puerta, el visitante es el sujeto que solicita el acceso y su hogar es el objeto al que se solicita el acceso.
  • Principal : un subconjunto de sujeto que está representado por una cuenta, rol u otro identificador único. Cuando llegamos al nivel de los detalles de implementación, los principales son las claves únicas que usamos en las listas de control de acceso. Pueden representar usuarios humanos, automatización, aplicaciones, conexiones, etc.
  • Usuario : un subconjunto de principal que generalmente hace referencia a un operador humano. La distinción se difumina con el tiempo porque las palabras "usuario" o "identificación de usuario" se intercambian comúnmente con "cuenta". Sin embargo, cuando necesita hacer la distinción entre la clase amplia de cosas que son principios y el subconjunto de éstas que son operadores interactivos que manejan las transacciones de una manera no determinista, "usuario" es la palabra correcta.

Sujeto / Objeto hereda de los mismos términos que se usan en la gramática. En una oración, el sujeto es el actor y el objeto es la cosa actuada. En este sentido, el uso ha existido desde antes de que se inventaran las computadoras. En un contexto de seguridad, un sujeto es cualquier cosa que pueda hacer una solicitud. Como se señaló anteriormente, esto no necesita limitarse a la seguridad de TI, por lo que es una clasificación muy amplia. Lo interesante es que el sujeto implica objeto. Sin un objeto, no hay sujeto.

Los directores son a lo que se dirigen los sujetos. Cuando presenta su tarjeta de crédito, usted es el sujeto y el número de cuenta es el principal. En otros contextos, su identificación de usuario o identificación emitida por el estado es su principal. Pero los directores pueden asociarse con muchos tipos de sujetos que no son personas. Cuando las aplicaciones solicitan funciones de nivel de sistema, el principal puede ser el firmante de un módulo de código ejecutable firmado, pero incluso en ese caso, el usuario que dirige la solicitud sigue siendo el sujeto.

El usuario es más específico que el sujeto o el principal porque generalmente se refiere a un operador interactivo. Es por eso que tenemos una interfaz gráfica de usuario y no una interfaz gráfica principal. Un usuario es una instancia de sujeto que se resuelve en un principal . Un único usuario puede resolver cualquier número de principales pero se espera que cualquier principal se resuelva en un solo usuario (suponiendo que las personas observen el requisito de no compartir ID). En el ejemplo anterior, el firmante de un módulo de código ejecutable definitivamente no es el usuario, pero es un principal válido. El operador interactivo que intenta cargar el módulo es el usuario.

Como se señala en los comentarios, incluso las fuentes autorizadas no están de acuerdo con estos términos. Busqué NIST, SANS, IEEE, MITRE y varias fuentes "casi autoritativas", como guías de exámenes de seguridad, mientras preparaba esta respuesta. Ninguna fuente que encontré, al menos cuasi-autoritaria, cubrió los tres términos y todos difirieron significativamente en su uso. Esta es mi opinión sobre cómo se deben usar los términos , pero desde un punto de vista práctico, cuando se analiza detenidamente un manual en el medio de la noche, las definiciones tienden a ser lo que el vendedor o el escritor dicen que son. Es de esperar que las respuestas aquí proporcionen suficiente información para navegar por las aguas y analizar cualquier documento de seguridad utilizando estos términos.


El sujeto es la entidad que solicita un servicio. Puede ser un usuario o un proceso. Probablemente es por eso que se eligió el nombre Asunto en lugar del usuario.

Cuando un sujeto intenta acceder a un servicio, el sujeto debe ser autenticado primero. La autenticación exitosa termina con la carga de los principales de seguridad para ese sujeto. Por ejemplo, en un sistema de control de acceso basado en roles, un usuario autenticado (registrado) generalmente tendrá dos principales: userId y roleId. En dichos sistemas, los privilegios (es decir, quién puede acceder a qué) se especifican para ambos roles y para los usuarios. Durante la autorización (es decir, verificar si se debe permitir el servicio solicitado), el sistema de seguridad comprobará la accesibilidad frente a los principales.

Por lo tanto, desde la perspectiva de la autorización, los directores son las entidades reales para las que se permite o no se permite el acceso. El sujeto es solo un usuario / hilo / proceso que contiene algunos principios.