specification/authentification.md

55 lines
1.9 KiB
Markdown

# Authentification
L'utilisation de Risotto nécessite un système d'authentification.
Afin de gérer l'authentification, le système doit délivrer un jeton permettant de valider
l'utilisateur avec l'IDP.
Les normes Oauth2 et notamment OIDC sont a envisager.
Le token servira à authentifier l'utilisateur, récupérer ses informations, et ainsi définir sa portée et ses droits.
Le token devra être renouvellé régulièrement afin de garantir la sécurité de l'applicatif.
## Exemple avec LemonLDAP et OIDC
### Demande de code d'authorization
- HTTP :
```
GET /oauth2/authorize?scope=openid&response_type=code&client_id=<CLIENT-ID>&client_secret=<CLIENT-SECRET>&redirect_uri=https://test1.cadoles.lan HTTP/1.1
Host: auth.cadoles.lan:443
```
- cURL :
```
curl -L -k https://auth.cadoles.lan/oauth2/authorize?scope=openid&response_type=code&client_id=<CLIENT-ID>&rclient_secret=<CLIENT-SECRET>&redirect_uri=https://test1.cadoles.lan
```
**Réponse :**
```
302 Found
to: https://test1.cadoles.lan?
code=61ac08c00acf2db3ec86ee3927198812&
session_state=xSSAehr9Tw13CxwkJdD4fPK%2FdIs9bsE1svdNYPaV4Kk%3D.Q0FxaHI5TDlTVk91WHdEdm1qU1FTK3N1Q2FuZitia2dQUjcwdThsTWNsNjkxcU15bE4yQS91U2NsTFdKeUF6SDFCMEU2MTJad1M2a2lubkhMdTJqclE9PQ
```
### Récupération du token
- HTTP :
```
GET /oauth2/authorize?scope=openid&response_type=code&client_id=<CLIENT-ID>&client_secret=<CLIENT-SECRET>&redirect_uri=https://test1.cadoles.lan HTTP/1.1
Host: auth.cadoles.lan:443
```
- cURL :
```
curl -L -k --request POST \
--url 'https://auth.cadoles.lan/oauth2/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--data 'grant_type=authorization_code' \
--data 'client_id=<CLIENT-ID>' \
--data 'client_secret=<CLIENT-SECRET>' \
--data 'code=4901feab4aead50dba657d19afbf18bf' \
--data 'redirect_uri=https://test1.cadoles.lan'
```