Autenticación versus Autorización

626

¿Cuál es la diferencia en el contexto de las aplicaciones web? Veo mucho la abreviatura "auth". Qué representa auth -entication o autenticación -orization? ¿O son ambos?

daGrevis
fuente
51
recuerde esto: la autenticación verifica las credenciales, la autorización verifica los permisos.
Onur Yıldırım
1
Duplicado entre sitios: serverfault.com/q/57077
Kyll
Recientemente por las abreviaturas que he visto authnpara autenticación y authzautorización
jdf
¿Responde esto a tu pregunta? ¿Hay alguna diferencia entre autenticación y autorización?
paxdiablo

Respuestas:

865

La autenticación es el proceso de determinar que alguien realmente es quien dice ser.

La autorización se refiere a reglas que determinan quién puede hacer qué. Por ejemplo, Adam puede estar autorizado para crear y eliminar bases de datos, mientras que Usama solo está autorizado para leer.

Los dos conceptos son completamente ortogonales e independientes, pero ambos son fundamentales para el diseño de seguridad, y el hecho de que ninguno de los dos sea correcto abre el camino al compromiso.

En términos de aplicaciones web, en términos muy crudos, la autenticación es cuando verifica las credenciales de inicio de sesión para ver si reconoce a un usuario como conectado, y la autorización es cuando busca en su control de acceso si permite que el usuario vea, edite o elimine o crear contenido.

Kerrek SB
fuente
32
Las definiciones parecen estar bien, pero ciertamente no parecen ser independientes. Según lo definido, ¿la autorización no implica también autenticación ? ¿Cómo puede permitir la operación de eliminación de la base de datos de Adam si duda de que sea Adam? Dicho de otra manera, si la operación de eliminación de Adam está autorizada, lo más probable es que eso implique que Adam esté autenticado.
Timo
77
@Timo: una aplicación presumiblemente querrá hacer ambas cosas, pero son conceptos ortogonales independientemente. Su jefe podría estar revisando las autorizaciones del personal para acceder a los componentes críticos del negocio, el jet de la compañía y el refrigerador de cerveza sin ninguna preocupación por qué individuo en particular en la fuente de CCTV coincide con los nombres en la hoja de cálculo. Esta última sería la preocupación del guardia de seguridad.
Kerrek SB
1
Los conceptos son definitivamente ortogonales. La autenticación no necesariamente prueba tu identidad. Podría estar demostrando un reclamo sobre usted, por ejemplo, la edad. Cuando bebes, autenticas tu edad mostrando una identificación. Luego, se le puede autorizar a beber según su edad y la jurisdicción en la que se encuentre (puede beber si> 21 en los EE. UU.> 18 en Europa)
David Brossard
1
@Sinjai: Creo que el punto es que esas son preocupaciones ortogonales, sin embargo, y pueden ser atendidas por instalaciones separadas: por ejemplo, el portero (de confianza) en la puerta puede establecer la edad del cliente, y diferentes servicios dentro del establecimiento pueden tener diferentes edades. límites, pero todos usarán el valor que obtuvieron del portero para tomar decisiones de admisión.
Kerrek SB
1
Otra forma de verlo (en el contexto del ejemplo del bar) sería considerar que la autenticación es el proceso de hacer coincidir la foto en la tarjeta de identificación con la persona que está frente a usted, mientras que la autorización es el proceso de validar que su edad cumple con los requisitos legales En mi opinión, el elemento en esta combinación que hace que las líneas se vean borrosas es que ambas pruebas también deben ser conscientes de la falsificación (y es que la identificación es falsa) que la mayoría de las personas tienden a ver como una preocupación de autenticación. que igualmente importante para la certificación auth-c y auth-z.
Ryan Hansen
660

En resumen, por favor. :-)

Autenticación = inicio de sesión + contraseña (quién eres)

Autorización = permisos (lo que tiene permitido hacer)

La "autenticación" corta es más probable que se refiera a la primera o a ambas.

Geo
fuente
3
Dulce como un pedazo de pastel :)
devansvd
Me gusta esto, corto y dulce.
Rey
55
Entonces todavía no entiendo por qué un encabezado de Autorización HTTP contiene información de autenticación ... ¿No es un nombre desafortunado?
Jens
@Jens Respuesta corta: sí. Roy Fielding no sabía mejor en ese momento ... ;-) </tongue-in-cheek>
Per Lundberg
@Jens Me pregunto eso también. Encuentro útil la intuición de esta respuesta . Como HTTP no tiene estado , la información de autenticación debe enviarse junto con cada solicitud, no solo las solicitudes de inicio y cierre (por ejemplo, establecer una sesión segura y enviar solicitudes sin autenticación intermedia). Por lo tanto, ese encabezado de solicitud debe ser una autorización , porque casi siempre lleva otras intenciones (buscar datos, img, ...), no solo autenticación .
Minh Nghĩa
83

Como dice Autenticación vs Autorización :

La autenticación es el mecanismo por el cual los sistemas pueden identificar de forma segura a sus usuarios. Los sistemas de autenticación proporcionan respuestas a las preguntas:

  • Quien es el usuario?
  • ¿Es realmente el usuario quien se representa a sí mismo?

Por el contrario, la autorización es el mecanismo por el cual un sistema determina qué nivel de acceso debe tener un usuario autenticado en particular para asegurar los recursos controlados por el sistema. Por ejemplo, un sistema de gestión de bases de datos podría diseñarse para proporcionar a ciertas personas específicas la capacidad de recuperar información de una base de datos pero no la capacidad de cambiar los datos almacenados en la base de datos, mientras que les da a otras personas la capacidad de cambiar datos. Los sistemas de autorización proporcionan respuestas a las preguntas:

  • ¿El usuario X está autorizado para acceder al recurso R?
  • ¿El usuario X está autorizado para realizar la operación P?
  • ¿El usuario X está autorizado para realizar la operación P en el recurso R?

Ver también:

Sebastian Paaske Tørholm
fuente
34

Prefiero la verificación y los permisos a la autenticación y autorización.

Es más fácil en mi cabeza y en mi código pensar en "verificación" y "permisos" porque las dos palabras

  • no suena igual
  • no tiene la misma abreviatura

La autenticación es verificación y la autorización es verificar los permisos. Auth puede significar cualquiera de los dos, pero se usa con más frecuencia como "Autenticación de usuario", es decir, "Autenticación de usuario"

Aditya Mittal
fuente
2
La verificación en mi humilde opinión parece tener un alcance un poco más abierto que la autenticación, a pesar de que la autenticación parece ser algún tipo de verificación, no todas las verificaciones son una autenticación ... por lo que diría que siempre se necesita un contexto: verificación de acceso del usuario, etc. parece que siempre sucede en el campo de "¿es realmente el tipo / máquina?" (golpéenme si me equivoco, no soy un hablante nativo, pero: "verifique" que la INFORMACIÓN proporcionada sea precisa frente a las autenticaciones parece tener algo que ver con saber que la persona / máquina es la que él / ella pretende ser)
Beachwalker
14

La confusión es comprensible, ya que las dos palabras suenan similares, y dado que los conceptos a menudo están estrechamente relacionados y se usan juntos. Además, como se mencionó, la abreviatura comúnmente utilizada Auth no ayuda.

Otros ya han descrito bien lo que significan autenticación y autorización. Aquí hay una regla simple para ayudar a mantener a los dos claramente separados:

  • Auth enti cación valida su Id enti dad (o autenticidad , si prefiere que)
  • Autor ización valida su autor dad, es decir, los derechos de acceso y posiblemente cambiar algo.
Kjartan
fuente
12

He tratado de crear una imagen para explicar esto en las palabras más simples.

1) Autenticación significa "¿Eres quien dices que eres?"

2) Autorización significa "¿Debería poder hacer lo que está tratando de hacer?".

Esto también se describe en la imagen a continuación.

ingrese la descripción de la imagen aquí

He tratado de explicarlo en los mejores términos posibles, y he creado una imagen de lo mismo.

Rohit Ailani
fuente
4

La autenticación es el proceso de verificar la identidad proclamada.

  • por ejemplo, nombre de usuario / contraseña

Generalmente seguido de una autorización , que es la aprobación de que puede hacer esto y aquello.

  • por ejemplo, permisos
Jakub Truhlář
fuente
Esta respuesta ya se da con una explicación profunda.
Sonu patel
3

Agregando a la respuesta de @ Kerrek;

La autenticación es un formulario generalizado (todos los empleados pueden iniciar sesión en la máquina)

La autorización es una forma especializada (pero el administrador solo puede instalar / desinstalar la aplicación en la máquina)

Boobalan
fuente
1
La palabra "puede" solo se aplica a la Autorización. La autenticación tiene poco o nada que ver con iniciar sesión. Podría muy bien autenticar que usted es Boobalan de muchas maneras (no solo nombre de usuario / contraseña). Una vez que me autentique y sepa quién es usted, no podría autorizarlo a iniciar sesión ni a hacer nada en mi sitio. Estás autenticado, pero no puedes hacer sentadillas diddley. Es confuso e incorrecto usar la palabra "can" cuando se habla de autenticación.
Suamere
3

La autenticación es el proceso de verificar su nombre de usuario y contraseña de inicio de sesión.

La autorización es el proceso de verificar que puedes acceder a algo.

Sovichea Cheth
fuente
3
Esta "respuesta" no agrega nada a las respuestas ya dadas.
Ojonugwa Jude Ochalifu
1

Definiciones

Autenticación : ¿es usted la persona que dice ser?

Autorización : ¿está autorizado a hacer lo que sea que intente hacer?

Ejemplo

Una aplicación web usa Google Sign-In . Después de que un usuario inicia sesión con éxito, Google devuelve:

  1. Una ficha JWT. Esto se puede validar y decodificar para obtener información de autenticación . ¿El token está firmado por Google? ¿Cuál es el nombre y el correo electrónico del usuario?
  2. Un token de acceso. Esto autoriza a la aplicación web a acceder a las API de Google en nombre del usuario. Por ejemplo, ¿puede la aplicación acceder a los eventos de Google Calendar del usuario? Estos permisos dependen de los ámbitos solicitados y de si el usuario lo permitió o no.

Adicionalmente:

La empresa puede tener un panel de administración que permite a la atención al cliente administrar a los usuarios de la empresa. En lugar de proporcionar una solución de registro personalizada que permita que el servicio de atención al cliente acceda a este panel, la empresa utiliza Google Sign-In.

¿El token JWT (recibido del proceso de inicio de sesión de Google) se envía al servidor de autorización de la compañía para determinar si el usuario tiene una cuenta de G Suite con el dominio alojado de la organización ([email protected])? Y si lo hacen, ¿son miembros del Grupo de Google de la compañía que se creó para atención al cliente? En caso afirmativo de todo lo anterior, podemos considerarlos autenticados .

El servidor de autorización de la compañía luego envía a la aplicación del tablero un token de acceso. Este token de acceso se puede utilizar para realizar solicitudes autorizadas al servidor de recursos de la empresa (por ejemplo, la capacidad de realizar una solicitud GET a un punto final que devuelve a todos los usuarios de la empresa).

jabacchetta
fuente
0

Authentication es un proceso de verificación:

  • identidad de usuario en un sistema (nombre de usuario, inicio de sesión, número de teléfono, correo electrónico ...) al proporcionar una prueba (clave secreta, biometría, sms ...). Autenticación multifactor como extensión.
  • verificación de correo electrónico usando digital signature
  • suma de comprobación

AuthorizationEs el siguiente paso después Authentication. Se trata de permisos / roles / privilegios a los recursos. OAuth (Autorización abierta) es un ejemplo de autorización

yoAlex5
fuente