Autenticazione e Autorizzazione

API

API

Endpoint di autenticazione

API Base Url:

dev: https://b2b-auth-service-dev.agyo.io/api

test: https://b2b-auth-service-test.agyo.io/api

prod: https://b2b-auth-service.agyo.io/api

Swagger:

https://b2b-auth-service-test.agyo.io/swagger-ui/index.html

Login Utente

Il flusso di autenticazione di un utente all'interno di TS Digital si suddivide in 2 parti: generazione di un nonce generazione del token JWT.

Generazione di un nonce

Un nonce è una stringa generata randomicamente utilizzata per assicurare l'univocità di una richiesta di login verso TS Digital. La generazione del nonce è effettuata attraverso una chiamata all'apposita API:

[POST] /api/v3/nonces

Headers

Sono richiesti gli header standard di TS Digital, con l'eccezione dell'header Authorization.

Body

{
  "id": "mail@test.com"
}

Risposte

Tutte le risposte sono in formato JSON

HTTP 200

Il nonce è stato generato con successo

{
  "nonce": "nonce-string"
}

HTTP 400

Parametro obbligatorio mancante nella richiesta

{
  "code": "string",
  "status": "string",
  "error": "string",
  "message": "string",
  "timestamp": "string"
}

HTTP 404

Non esiste alcun utente con l'ID specificato

{
  "code": "string",
  "status": "string",
  "error": "string",
  "message": "string",
  "timestamp": "string"
}

HTTP 500

Si è verificato un errore interno del server nella generazione del nonce

{
  "code": "string",
  "status": "string",
  "error": "string",
  "message": "string",
  "timestamp": "string"
}

Generazione del token JWT

Il token JWT è il token di autenticazione utilizzato per tutte le chiamate effettuate verso i servizi di TS Digital. All'interno del token possono essere disponibili alcuni dati sull'utente loggato sul token stesso:

{
  "sub": "id-utente",
  "passwordExpirationDate": 32506271999999,
  "iss": "https://agyo.io",
  "tsId": "tsid@tsid.com",
  "given_name": "Name",
  "locale": "it-IT",
  "uid": "uuid-v4-identifier",
  "aud": "https://agyo.io",
  "provider": "agyo",
  "name": "Name Surname",
  "appKey": false,
  "userType": "P",
  "exp": 1600109670,
  "family_name": "Surname",
  "iat": 1600088070,
  "jti": "uuid-v4-identifier",
  "hash": "token hash"
}

 

*** Claim presente in tutti i token.

Il token JWT può essere generato, una volta recuperato il nonce, utilizzando la seguente API:

[POST] /api/v3/tokens

Headers

Sono richiesti gli header standard di TS Digital, con l'eccezione dell'header Authorization.

Body

{
  "id": "string",
  "digest": "string",
  "resources": [
    "string"
  ]
}

Risposte

Tutte le risposte sono in formato JSON

HTTP 200

Il nonce è stato generato con successo

{
  "refreshToken": "string",
  "accessToken": "string",
  "tokenType": "Bearer"
}

HTTP 400

Parametro obbligatorio mancante nella richiesta

{
  "code": "string",
  "status": "string",
  "error": "string",
  "message": "string",
  "timestamp": "string"
}

HTTP 401

Il digest fornito è errato

{
  "code": "string",
  "status": "string",
  "error": "string",
  "message": "string",
  "timestamp": "string"
}

HTTP 404

Non esiste alcun utente con l'ID specificato

{
  "code": "string",
  "status": "string",
  "error": "string",
  "message": "string",
  "timestamp": "string"
}

HTTP 500

Si è verificato un errore interno del server nella generazione del token

{
  "code": "string",
  "status": "string",
  "error": "string",
  "message": "string",
  "timestamp": "string"
}

Logout utente

Tramite l'API di logout è possibile invalidare un token d'autenticazione, rendendolo inutilizzabile.

[DELETE] /api/v3/tokens

Headers

Sono richiesti gli header standard di TS Digital, con l'eccezione dell'header Authorization.

Body

{
  "accessToken": "string"
}

Risposte

Tutte le risposte sono in formato JSON

HTTP 200

Il token è stato invalidato con successo

{}

HTTP 400

Parametro obbligatorio mancante nella richiesta o token invalido

{
  "code": "string",
  "status": "string",
  "error": "string",
  "message": "string",
  "timestamp": "string"
}

HTTP 500

Si è verificato un errore interno del server nella generazione del nonce

{
  "code": "string",
  "status": "string",
  "error": "string",
  "message": "string",
  "timestamp": "string"
}