## Autenticación y autorización

#### En primer lugar, Papel Cero generará y proporcionará al cliente la siguiente información:

##### client_id: Id que le corresponde al cliente

##### client_secret: Código secreto del cliente para poder acceder a la API

##### code: Código de autorización. Este código es distinto según el DMS al que se desee acceder, servicios, apis, etc.

#### Con esta información el cliente deberá seguir los siguientes pasos para hacer las llamadas a la API:

##### Llamar a la API para autenticarse y obtener un token de acceso

##### Hacer las llamadas a la API utilizando el token obtenido

#### Petición de autenticación

#### Para autenticarse en el sistema y poder hacer las llamadas a la API primero debemos obtener el token. Para ello haremos una petición POST a la URL:

##### https://dominio/avanws.php

##### y como parámetros del post debemos indicar:

##### grant_type=client_credentials

##### client_id=webproviderpapel0id

##### client_secret=56792cdaaece9b3771b297cb

##### service=getToken

##### code=5396e8922cdccb824270d110

##### El parámetro service siempre será getToken para consumir este servicio.

##### El parámetro grant_type siempre será client_credentials, el resto de parámetros serán proporcionados por Papel Cero.

##### El servicio responderá un json indicando en el campo client_token el token de acceso que se deberá utilizar para llamar a la api. El tipo de token siempre será bearer.

#### Llamadas a la API utilizando el token

#### Cualquier llamada a cualquier API deberemos hacerla utilizando el token que hemos obtenido en la llamada al servicio getToken indicándolo en la cabecera HTTP Authorization indicando que es Bearer:

##### Authorization: Bearer a503faf9-45b5-4fec-8334-337284a66ea4

#### Errores de autenticación

#### Si se produce algún tipo de error al llamar a obtener el token, el servidor devolverá un código de error HTTP 400 y en el cuerpo del mensaje dará la información del error:

##### {"error": "invalid_client","error_description": "Invalid client"}

#### Cuando se está intentando acceder a cualquier API y tenemos algún error de autorización el servidor responderá con un error HTTP 401 y un documento como este:

##### {"code": "unauthorized_client","message": "Invalid authorization token"}

#### Ejemplo de Uso PHP Curl