## ¿Qué es OAuth2? * **OAuth** = **Open** + **Auth**orization * OAuth 2.0 - Es un Framework de Autorización versión 2.0 * Es un protocolo abierto de autorización * Permite la delegación de permisos sobre recursos a otras aplicaciones --- ## ¿Qué es Autenticación? - Proceso para establecer la **identidad de un usuario** - Proceso de verificación de **Usuario y Contraseña** --- ## ¿Qué es Autorización? - Proceso para **controlar acciones** de usuarios - Proceso de validación de acceso a **recursos** - Determinar la autoridad para realizar una acción --- ## Esquema de Rol OAuth2 ![](https://i.imgur.com/gQ5uKFF.png) --- ## Esquema de Delegación ![](https://i.imgur.com/1PqznMd.png) --- ## Tipos de Grant Type - Authorization Code - PKCE - Client Credentials - **Password Grant** - Refresh Token --- ## ¿Qué es OpenID? - Es un protocolo simple que agrega la funcionalidad de identidad al Framework OAuth 2.0. - Permite a los clientes verificar la identidad del usuario final basándose en la autenticación realizada por un servidor de autorización --- ## Esquema de OpenID ![](https://i.imgur.com/E9hgpc1.png) --- ## ¿Qué es JSON Web Token (JWT)? - Es un estándar abierto (RFC 7519) que define una forma compacta y autocontenida de transmitir información de forma segura entre las partes como un objeto JSON --- ## Ejemplo JWT ![](https://i.imgur.com/k2TPvaa.png) --- ## Estructura de un JSON Web Token (JWT) | Header | Payload | Signature | | -------- | -------- | -------- | | Identifica que algoritmo es utilizado para la firma del JWT | Contiene conjunto de `Claims` or atributos estándar de un token | Validación de seguridad del token | --- ## Flujo de solicitud de token de acceso JWT ![](https://i.imgur.com/HdvZeDF.png) --- ### Flujo de solicitud de token de acceso JWT ![](https://i.imgur.com/EwOaJnB.png) --- ### Flujo de solicitud de token de acceso JWT ```shell= curl --location --request POST 'https://apigateway.siare.gov.py:9444/oauth2/token' \ --header 'Authorization: Basic MXVZNkVabV9uUHNHMjU4eFdydnZmVUx3ZlFZYTpITU9qZklaTXpmT3RFN3MzNTZJb1d3WEg1cE1h' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=password' \ --data-urlencode 'username=enrique_mereles' \ --data-urlencode 'password=12345' \ --data-urlencode 'scope=openid profile' \ --data-urlencode 'application=' \ ``` --- ## Modelo de Autenticación implementado ![](https://i.imgur.com/MfVH1mG.png) --- ## Secuencia de Autenticación ![](https://i.imgur.com/auitNKU.png) --- ## Proyecto del User store manager El WSO2 permite la creación de adaptador para la gestión de User store para ello es necesario descargar un proyecto base e implementar los métodos de * **doListUsersWithID**: el método tiene la responsabilidad de listar los usuarios del user store y mostrarlo en la consola del WSO2 Identity Server * **doAuthenticateWithUserName**: el método tiene la responsabilidad de autenticar al usuario utilizando `usuario` y `contraseña` * **doGetUserClaimValuesWithID**: el método tiene la responsabilida de obtener los datos de institucion y perfil asociado al usuario --- ## Proyecto del SIARE Autenticación El proyecto ```siare-autenticacion-back ```, tiene la responsabilida de gestionar el ciclo de vida del token, así también realiza la operación de obtención de *scope* asignado al usuario. El api utilizado para la obtención del token es : `/seguridad/token` --- ### Referencias - [Authorization](https://datatracker.ietf.org/doc/html/rfc6749) - [OpenID](https://openid.net/connect/) - [JWT](https://datatracker.ietf.org/doc/html/rfc7519) - [Writing a Custom User Store Manager](https://is.docs.wso2.com/en/5.9.0/setup/writing-a-custom-user-store-manager/) - [Grant Type](https://oauth.net/2/grant-types/)
{"metaMigratedAt":"2023-06-16T19:09:49.515Z","metaMigratedFrom":"YAML","title":"OAuth2","breaks":true,"description":"Esquema de Autenticación y Autorización","contributors":"[{\"id\":\"e91465d8-053e-4b6c-9d94-c55eaa5843ee\",\"add\":6553,\"del\":2642}]"}
    726 views