Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
app:tema4 [2024/11/14 17:00] – thejuanvisu | app:tema4 [2024/12/12 17:17] (actual) – thejuanvisu | ||
---|---|---|---|
Línea 74: | Línea 74: | ||
==== OAuth ==== | ==== OAuth ==== | ||
+ | |||
+ | Es un sistema de autenticación. Cuando te logueas, te manda a una página de google donde iniciar sesión, pide permisos para el inicio de sesión y acto seguido redirige a la web/ | ||
+ | |||
+ | === Endpoints del servidor de autorización === | ||
+ | |||
+ | * Authorization (HTML): Formulario de autenticación | ||
+ | * Token (REST/ | ||
+ | * Introspection (REST/ | ||
+ | |||
==== OpenID Connect ==== | ==== OpenID Connect ==== | ||
Línea 79: | Línea 88: | ||
==== SAML ==== | ==== SAML ==== | ||
- | ==== Kerberso | + | Es un protocolo de autenticación y autorización. Se basa en XML. La mayor parte de los Identity Providers (IdPs) proporcionan una implementación de SAML. Contempla varios escenarios llamados perfiles. SAML va muy ligado a Single Sing On (SSO) en aplicaciones Web. SAML también suele estar relacionado con directorios de ususarios empresariales LDAP como Active Directory. SAML se suele usar generalmente de forma corporativa, |
+ | |||
+ | === Como funciona | ||
+ | El navegador accede a la aplicación web y, dando por hecho que no se está logueado, manda al formulario de autenticación IdPs, una vez autenticado, | ||
+ | |||
+ | === Aplicaciones nativas | ||
+ | SAML se diseño antes de que existieran teléfonos móviles. Existen aplicaciones de terceros que permiten utilizarlo, pero con bastantes riesgos de seguridad. | ||
+ | |||
+ | ==== Kerberos ==== | ||
+ | |||
+ | Kerberos es un protocolo de autenticación y autorización. Esta pensado para que una aplicación en un equipo de sobremesa lo corra contra un servicio. | ||
+ | Se realiza una petición al servicio de autenticación, | ||
+ | - Arrancas el PC | ||
+ | - Te autenticas | ||
+ | - EL sistema operativo pide un TGT | ||
+ | - Se recibe un TGT y se guarda en el Sistema Operativo | ||
+ | - Se arranca una aplicación cliente | ||
+ | - Pide el TGT al sistema operativo y un token para consumir el servicio | ||
+ | - Con ese ticket se establece una conexión segura para utilizar las aplicaciones | ||
+ | Se podría decir que es como un Single Sing On para aplicaciones de escritorio. | ||
+ | |||
+ | ==== SPNEGO ==== | ||
+ | |||
+ | Kerberos no se puede usar en aplicaciones web, por eso se crea SPNEGO, que permite realizar kerberos para aplicaciones web a nivel de servidor. Se suele utilizar en el esquema Negotiate de HTTP con la cabecera Autorization. Se suele usar para autenticar un navegador que corre en windows con una aplicación web usando kerberos como esquemas de autenticación para dicha aplicación web. Sigue los siguientes pasos: | ||
+ | - Arrancamos el PC | ||
+ | - Nos autenticamos en el equipo | ||
+ | - Windows Pide el TGT al servicio de autenticación y lo guarda | ||
+ | - Se arranca el navegador | ||
+ | - Se intenta acceder a una aplicación web | ||
+ | - Se realiza una petición | ||
+ | - Se recibe un error 401: Usa esquema Negotiate con authorization | ||
+ | - El navegador pide al sistema operativo el TGT | ||
+ | - Recibe el TGT y pide al Ticket Granting Service (TGS) un token | ||
+ | - El navegador vuelve a hacer un GET con la cabecera Negotiate seguida del token | ||
+ | - La aplicación web Llama al Ticket Granting Service (TGS) para validar el token | ||
+ | - Si el token es válido se da acceso a la aplicación web al usuario. | ||
===== Control de acceso ===== | ===== Control de acceso ===== | ||
Línea 85: | Línea 129: | ||
==== Control de acceso basado en roles ==== | ==== Control de acceso basado en roles ==== | ||
+ | |||
+ | Basado en modelo RBAC Role Based Access Control, esta condicionado a que un usuario tenga un rol o un conjunto de roles. Funciona bien cuando aplicaciones y servicios están modelados. La idea es que un empleado solo pueda usar las aplicaciones y funcionalidades que necesite su departamento. El problema es que puede ser tedioso al ser necesario establecer todos los roles que debe tener un usuario, el problema de esto es que puede llegar a ser problemático si hay demasiados roles y usuarios. Es una solución perfecta para una empresa con pocos departamentos que igual necesita un rol por departamento más otros de administración. El problema es cuando la empresa es excesivamente grande y necesita cientos de roles diferentes. | ||
+ | |||
+ | RBAC es un modelo muy estático, por su solo no permite modelar de forma completa las reglas de control de acceso. Es necesario código adicional para ello. | ||
==== Control de acceso basado en atributos ==== | ==== Control de acceso basado en atributos ==== | ||
+ | Es el sistema más potente. Conocido como modelo ABAC: Attribute Based Access Control. Suele utilizar atributos (Tienen un nombre y un valor), curiosamente los roles pueden ser consideradas atributos. se tiene en cuenta lo siguiente: | ||
+ | * Sujeto: el que invoca la acción. Puede ser un usuario u otro tipo de entidad. Atributos como ID, nombre, roles, etc... | ||
+ | * Recurso: Objeto sobre el que se aplican las acciones. Atributos propios | ||
+ | * Entorno: Atributos como día, mes, etc... | ||
+ | * Políticas | ||
+ | |||
+ | El modelo ABAC pretende que las PRINCIPALES políticas de control de seguridad NO estén cableadas en las aplicaciones. De esta forma si se decide variar las reglas de control de acceso no es necesario tocar el código de las aplicaciones. La idea es que puedan ser editadas por alguien que no sea desarrollador (Poco realista, al final lo acaba haciendo un desarrollador por orden de alguien de negocio). | ||
+ | === Ejemplos de ABAC === | ||
+ | < | ||
+ | Eliminación de proyectos: | ||
+ | user.rol == ' | ||
+ | |||
+ | Edición de una nómina: | ||
+ | user.department == ' | ||
+ | </ | ||
+ | === Como funciona el modelo ABAC === | ||
+ | - La aplicación debe correr la librería PEP (Policy Enforcement Point) | ||
+ | - Cuando la aplicación recibe una petición de un usuario, la aplicación pregunta al PEP, que a su vez pregunta al Policy Decision Point (PDP) si dicho usuario puede realizar la acción | ||
+ | - El PDP recupera la política relacionada del Policy | ||
+ | - Si los atributos coinciden con aquellos permitidos se da permiso al usuario la realización de la acción en la aplicación. | ||
+ | === XACML === | ||
+ | eXtensible Acces Control Markage Laguguaje Ofrece un lenguaje XML para la definición de políticas. La idea es que este documento se editara desde una aplicación. También establece el formato de las peticiones que hace el PEP al PDP. | ||