Authentification
Vous pouvez vous authentifier auprès de l’API GraphQL à l’aide d’un jeton d’accès personnel OAuth, d’une application AriseID Connect ou d’un compte de service.
Authentification avec une application OAuth
Warning
AriseID Connect est encore en beta et cette section pourrait être amenée à changer.
Pour vous authentifier avec un jeton OAuth provenant d’une application AriseID Connect, vous devez d’abord autoriser votre application OAuth à l’aide d’un “Authorization Code Flow” ou d’un “Device Authorization Flow”. Vous pouvez ensuite utiliser le jeton d’accès (access token) que vous avez reçu pour accéder à l’API.
Les jeton d’accès (access token) s’utilisent avec une authentification bearer.
Authorization: Bearer <TOKEN>
Exemple avec cURL :
curl 'https://api.iiens.net/graphql/v1' \
-X POST \
-H 'Authorization: Bearer ory_at_JGhESDjKfHMQ8Wcy0cC3.hIQxGmX37ydn8WmKAnlD3U' \
-H 'content-type: application/json' \
--data '{
"query": "{ profile { id } }"
}'
Authentification avec un jeton d’accès personnel OAuth
Le Client Credentials Flow est utilisé lorsqu’une application doit accéder à ses propres ressources, plutôt qu’à celles d’un utilisateur. Dans ce flux, l’application envoie son identifiant client et sa clé secrète client au serveur d’autorisation, et reçoit en retour un jeton d’accès qui peut être utilisé pour accéder aux ressources protégées.
Warning
AriseID Connect est encore en beta et cette section pourrait être amenée à changer.
Pour vous authentifier avec un jeton d’accès personnel (personal access token ou “PAT”), suivez les étapes décrites dans la documentation AriseID Connect (TODO). Les données que vous demandez détermineront le scope ou les autorisations dont vous aurez besoin.
Par exemple, sélectionnez l’autorisation profile pour lire les données nécessaire pour afficher le profil de l’utilisateur.
Si votre jeton ne dispose pas du scope ou des autorisations requis pour accéder à une ressource, l’API renverra un message d’erreur indiquant que la requête ou le champ ne sont pas accessibles.
Authentification basique (client_secret_basic)
Cette méthode est appropriée pour les clients enregistrés en Token Endpoint Auth Method = client_secret_basic.
const clientID = "the-client-id"
const clientSecret = "the-secret-id"
const basicAuth = base64_encode(url_encode(clientID) + ":" + url_encode(clientSecret))
const requestOptions = {
method: "POST",
headers: {
Authorization: "Basic " + basicAuth,
"Content-Type": "application/x-www-form-urlencoded",
},
body: "grant_type=client_credentials&scope=read",
}
fetch("https://oidc.iiens.net/oauth2/token", requestOptions)
.then((response) => response.json())
.then((data) => console.log(data))
Exemple d’output :
ory_at_JGhESDjKfHMQ8Wcy0cC3.hIQxGmX37ydn8WmKAnlD3U
Authentification dans le body (client_secret_post)
Cette méthode est appropriée pour les clients enregistrés en Token Endpoint Auth Method = client_secret_post.
const clientID = "the-client-id"
const clientSecret = "the-secret-id"
const qs = new URLSearchParams()
qs.set("grant_type", "client_credentials")
qs.set("client_id", clientID)
qs.set("client_secret", clientSecret)
qs.set("scope", read)
const requestOptions = {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: qs.toString(),
}
fetch("https://oidc.iiens.net/oauth2/token", requestOptions)
.then((response) => response.json())
.then((data) => console.log(data))
Exemple d’output :
ory_at_JGhESDjKfHMQ8Wcy0cC3.hIQxGmX37ydn8WmKAnlD3U
Requête avec le PAT
Une fois votre Personal Access Token obtenu, vous pouvez effectuer des requêtes à l’API.
Les PAT s’utilisent avec une authentification bearer.
Authorization: Bearer <TOKEN>
Exemple avec cURL :
curl 'https://api.iiens.net/graphql/v1' \
-X POST \
-H 'Authorization: Bearer ory_at_JGhESDjKfHMQ8Wcy0cC3.hIQxGmX37ydn8WmKAnlD3U' \
-H 'content-type: application/json' \
--data '{
"query": "{ profile { id } }"
}'
Authentification avec un compte de service
Les comptes de service ou “Service Account” permettent un accès plus large aux données, par exemple à l’ensemble des utilisateurs. Ces comptes sont utilisés en interne à ARISE mais peuvent aussi être délivrés aux utilisateurs ou associations qui en font la demande.
Caution
L’utilisation de ces jetons expose potentiellement des données sensibles. En utilisant un compte de service, vous vous engagez à respecter les normes RGPD et à protéger votre site par authentification.
Les jetons (tokens) de compte de service s’utilisent avec une authentification basique.
Authorization: Basic <TOKEN>
Exemple avec cURL :
curl 'https://api.iiens.net/graphql/v1' \
-X POST \
-H 'Authorization: Basic Y29tcHRlMTpsbCRWQmk2NTMjMExZeEEqaGFGJE13UDg=' \
-H 'content-type: application/json' \
--data '{
"query": "{ currentServiceAccount { id } }"
}'