Herramientas de usuario

Herramientas del sitio


informatica:programacion:api

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:api [2022/04/16 12:03] – [OAuth] tempwininformatica:programacion:api [2022/04/16 13:09] (actual) – [OAuth] tempwin
Línea 11: Línea 11:
 Acceso limitado a ciertos recursos mediante autorización. Acceso limitado a ciertos recursos mediante autorización.
  
-OAuth viene de Other Authorization, es decir, dar a "otros" autorización para acceder de forma limitada a ciertos recursos.+OAuth viene de **Open Authorization**, es decir, dar a "otros" autorización para acceder de forma **limitada** a ciertos recursos.
  
 En resumen: En resumen:
Línea 19: Línea 19:
   * Acceso a un servicio web (vía HTTP)   * Acceso a un servicio web (vía HTTP)
   * OAuth 1.0 está obsoleto   * OAuth 1.0 está obsoleto
 +
 +Dado que hay riesgo en dar credenciales a terceros, OAuth emplea un **token de acceso**. Este token es el usado para obtener acceso a los recursos protegidos.
 +
 +Roles:
 +
 +  * **Resource Owner**: propietario del recurso al que se quiere acceder.
 +  * **Resource Server**: provee los recursos 
 +  * **Cliente** / **Aplicación** (//third party//): quien accede a los recursos
 +  * **Authorization Server**: provee el token de acceso al cliente/aplicación para acceder a los recursos.
 +
 +Flujo del protocolo OAuth:
 +
 +  - El cliente hace una petición de autorización al Resource Owner
 +  - El Resource Owner responde con una permiso de acceso (//Authorization Grant//) al cliente indicándole que tiene autorización para acceder a los recursos.
 +  - El cliente envía el permiso obtenido al Authorization Server que es responsable de proteger los recursos del Resource Owner
 +  - El Authorization Server envía al cliente el token de acceso.
 +  - El cliente usa el token de acceso con el Resource Server para obtener los recursos protegidos.
 +  - El Resource Server envía los recursos solicitados por el cliente y a los que tiene autorización.
 +
 +<code>
 +     +--------+                               +---------------+
 +            |--(A)- Authorization Request ->  Resource    |
 +            |                                   Owner     |
 +            |<-(B)-- Authorization Grant ---|               |
 +            |                               +---------------+
 +            |
 +            |                               +---------------+
 +            |--(C)-- Authorization Grant -->| Authorization |
 +     | Client |                                   Server    |
 +            |<-(D)----- Access Token -------|               |
 +            |                               +---------------+
 +            |
 +            |                               +---------------+
 +            |--(E)----- Access Token ------>   Resource   |
 +            |                                   Server    |
 +            |<-(F)--- Protected Resource ---|               |
 +     +--------+                               +---------------+
 +</code>
 +
 +Tipos de autorizaciones (//authorization grant types//):
 +
 +  * **Authorization code**: el cliente pide autorización al propietario del recursos a través del Authorization Server. El propietario del recursos tiene que acceder al Authorization Server para darle permisos.
 +  * **Implicit**: los recursos de solicitan a través de un programa.
 +  * **Resource Owner**: permisos totales sobre los recursos.
 +  * **Client credencials**: nunca se le pregunta al propietario del recursos por permiso.
 +
 +El más utilizado es el de **Authorization Code**.
 +
 +Un **token de acceso** (//access token//) se usa para poder acceder a un recurso protegido.
 +
 +El **refresh token** es lo que se utiliza para conseguir un nuevo token de acceso. Se utiliza cuando el token de acceso tiene un tiempo de vida limitado.
 +
 +=== Authorization Code Grant ===
 +
 +Antes de comenzar el flujo del protocolo, el cliente debe haber conseguir del Authentication Server un **Client ID**.
 +
 +El cliente / aplicación hace una petición HTTP al //endpoint// de su interés, envía su ID y autenticación al Authorization Server para obtener el código de autorización.
 +
 +El cliente envía el código de autorización al Authorization Server y este le devuelve el **access token**.
 +
 +=== Registro de clientes ===
 +
 +El cliente hace una solicitud HTTP al Authorization Server y este le devuelve:
 +
 +  * Client ID
 +  * Client Secret (cuando el tipo de cliente es confidencial)
 ===== APIs públicas ===== ===== APIs públicas =====
  
   * [[https://github.com/public-apis/public-apis|Colección de APIs públicas]] (GitHub)   * [[https://github.com/public-apis/public-apis|Colección de APIs públicas]] (GitHub)
informatica/programacion/api.1650103402.txt.gz · Última modificación: por tempwin