Authentification

L'authentification pour les appels à l'API se font grâce à l'obtention préalable d'un token JWT.

Ce token a une durée de vie de 1 heure, cela signifie qu'il est nécessaire d'obtenir un nouveau token régulièrement. Il est possible de rafraîchir le token pour prolonger sa validité. Le rafraîchissement du token est possible pendant 12 heures après l'obtention du premier.

Obtenir un token JWT

Vous pouvez obtenir un nouveau token JWT en faisant un POST sur l'url /api/v2/account/token/.

Note

Nouveau en version 2.1 : l'email est insensible à la casse.

Requête :

POST /api/v2/account/token/ HTTP/1.1
Host: extranet.kosc-telecom.fr
Content-Type: application/json

{
  "email": "email@domain.com",
  "password": "xxxxxxxxxx",
}

Réponse :

HTTP/1.1 200 OK
Content-Type: application/json

{
  "refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b",
  "access": "eyJhbGciOiJIUzIInR5cCI6I.48rgjeijw2qef24o3du2eufonefwe",
  "user": {
    "date_joined": "2017-11-22T10:04:13Z",
    "last_login": "2019-03-19T06:54:08Z",
    "user_uuid": "ut8rie3",
    "operator_name": "Stella",
    "language": "fr",
    "fullname": "Renarin Kholin",
    "first_name": "Renarin",
    "last_name": "Kholin",
    "cell_phone_number": "0606060606",
    "email": "ren.kh@palace.ak",
    "groups": [
      11
    ],
    "operator_uuid": "9jxt7k2r"
  }
}

En cas d'identifiants invalides, l'API renvoie un code HTTP 401.

Utilisation du token JWT

Avertissement

Initialement, le token pouvait être fourni à chaque requête via un paramètre query string. Ce comportement est déprécié et sera prochainement désactivé pour des raisons de sécurité. Vous êtes invités à migrer vers l'authentification par entête HTTP.

Le token, une fois récupéré, doit être fourni à chaque requête via le header Authorization Bearer <TOKEN>.

Requête :

GET /api/users/ut8rie3/ HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzIInR5cCI6I.48rgjeijw2qef24o3du2eufonefwe
Host: extranet.kosc-telecom.fr

Réponse :

HTTP/1.1 200 OK
Content-Type: application/json

{
  "date_joined": "2017-11-22T10:04:13Z",
  "last_login": "2019-03-19T06:54:08Z",
  "user_uuid": "ut8rie3",
  "operator_name": "Stella",
  "language": "fr",
  "fullname": "Renarin Kholin",
  "first_name": "Renarin",
  "last_name": "Kholin",
  "cell_phone_number": "0606060606",
  "email": "ren.kh@palace.ak",
  "groups": [
      11
  ],
  "operator_uuid": "9jxt7k2r"
}

Quand le token est expiré, l'API renvoie un code HTTP 403.

HTTP/1.1 403 FORBIDDEN
Content-Type: application/json

{
    "error": {
        "detail": "Given token not valid for any token type",
        "code": "token_not_valid",
        "messages": [
            {
                "token_class": "AccessToken",
                "token_type": "access",
                "message": "Token is invalid or expired"
            }
        ]
    },
    "apirequest_uuid": "KOSC_8f340d1e-4ccf-40c0-a1a4-7a13046aea4e"
}

Rafraîchissement du token JWT

Tant que le refresh token n'est pas expiré, on peut rafraichir le token d'access en faisant un POST sur l'url /api/v2/account/token/refresh/.

Note

Le rafraichissement par token peut être répété (token 1 > token 2 > token 3). Un token peut être rafraîchi pendant 12 heures après l'obtention du premier.

Requête :

POST /api/v2/account/token/refresh/ HTTP/1.1
Host: extranet.kosc-telecom.fr
Content-Type: application/json

{
  "refresh": "eyJhbGciOiJIUzIInR5cCI6I.48rgjeijw2qef24o3du2eufonefwe"
}
HTTP/1.1 200 OK
Content-Type: application/json

{
    "access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWN",
    "refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBl",

}

Vérifier la validité du token

On peut vérifier la validité du token en faisant un POST sur l'url /api/account/token/verify/

Requête :

POST /api/v2/account/token/refresh/ HTTP/1.1
Host: extranet.kosc-telecom.fr
Content-Type: application/json

{
  "token": "eyJhbGciOiJIUzIInR5cCI6I.48rgjeijw2qef24o3du2eufonefwe"
}

Si le token est toujours valide, l'API renvoie une réponse 200 :

HTTP/1.1 200 OK
Content-Type: application/json

Si le token n'est plus valide, l'API renvoie une réponse 401 :

HTTP/1.1 401 UNAUTHORIZED
Content-Type: application/json