S T A C K F I R E

Loading

  • contacto@stackfire.com

OAUTH

  • Es un estándar abierto para la autorización de APIs.
  • Permite compartir información entre sitios sin tener que compartir la identidad
  • Es un mecanismo utilizado por grandes compañías como: Google, Facebook, Microsoft, Twitter, etc.
  • Implementa diferentes flujos de autenticación: como el código de autorización, propietario de la contraseña implícito, etc.

Oauth surgió porque

Se tenía la necesidad del envió continuo de credenciales entre cliente y servidor, sobre todo cuando se tenía alguna integración con aplicaciones de terceros. (En este caso se necesitaba que el cliente enviara sus credenciales para poder establecer seguridad en las aplicaciones).

Ejemplo, si queremos generar contenido en twitter y queremos que este contenido aparezca en la sesión del usuario, necesitábamos que nos pasen la contraseña y el usuario del cliente.

Con Oauth nos permite hacer estas acciones, sin necesidad de solicitar las credenciales.

ROLES

SE TIENEN DIFERENTES ROLES LOS CUALES SON LOS QUE PARTICIPAN EN EL PROCESO DE LA IMPLEMENTACION DEL OAUTH:

  • Dueño del recurso (owner).
  • Cliente(client).
  • Servidor de recursos protegidos (resource server).
  • Servidor de autorización(authorization server).

DUEÑO DEL RECURSO (OWNER)

El propietario del recurso es el usuario que da autorización a una determinada aplicación para acceder a su cuenta y poder hacer algunas cosas en su nombre.

El conjunto de cosas que puede hacer la aplicación en su nombre se denomina alcance, y podría ser, por ejemplo, solamente acceso de lectura y no poder crear ningún tipo de elemento de ningún nuevo recurso en su nombre.

CLIENTE

Es cualquiera aplicación que desea acceder a la cuenta del usuario, este cliente debe ser autorizado por el usuario y esta autorización debe ser validada.

Este cliente puede ser una aplicación web, móvil, de escritorio, etc.

SERVIDOR DE AUTORIZACION

  • Es el responsable de gestionar las peticiones de autorización.
  • Verifica la identidad de los usuarios y emite tokens de acceso a la aplicación cliente.

SERVIDOR DE RECURSOS

  • Es el servidor que aloja el recurso protegido al que queremos acceder
  • Puede ser parte de la misma aplicación que el servidor de autenticación

TIPOS DE CLIENTES

CLIENTES CONFIDENCIALES: Son aquellos capaces de guardar una contraseña sin que esta sea accesible o expuesta.

CLIENTES PUBLICOS: Son aquellos que no son capaces de guardar una contraseña y mantenerla a salvo.

SE TIENEN DIFERENTES TIPOS DE CONCESIÓN

  • Authorization code
  • Implícit
  • Resource owner password credentials
  • Device code flow
  • Cliente credentials flow

Authorization code

Se basa en un código de autorización. Es la más completa de todas y se utiliza en clientes confidenciales.

EJEMPLO:

1.- Envió de autorización:

https://autorizacion.servidor.com//authorize?response_type=code&client_id=the-client-id&state=xyz&redirect_uri=https://cliente.ejemplo.com/cb&scope=api_read

2.- Se devuelve una respuesta a través de una URL:

Asignación de código de autorización del usuario

https://cliente.ejemplo.com/cb?code=AbCdEfGHiJK12345&state=xyz

3.- Petición de tipo POST.

POST /token HTTP/1.1 
Host: autorizacion.servidor.com 
Authorization: Basic afds8709afs8790asf

grant_type=authorization_code 
&code=AbCdEfGHiJK12345 
&redirect_uri=https://cliente.ejemplo.com/cb

4.- Se obtiene token de acceso:

HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 
Cache-Control: no-store 
Pragma: no-caché 
{ 
“access_token”:”2YotnFZFEjr1zCsicMWpAA”, 
“token_type”:”example”, 
“expires_in”:3600, 
“refresh_token”:”tGzv3JOkF0XG5Qx2TIKWIA”, 
“example_parameter”:”example_value” 
}

Leave a Comment