DocumentationConnexion avec Learnya

Exploiter

Connexion avec Learnya

Laissez les personnes se connecter à votre application avec leur compte Learnya. OAuth 2.1 et OpenID Connect, sur auth.learnya.ai.

Sur cette page
  1. Le document de découverte
  2. Quel flux choisir
  3. Code d’autorisation avec PKCE
  4. Vérifier un jeton
  5. Aussi disponible
  6. Enregistrer votre application

Le document de découverte

Tout ce dont une bibliothèque OpenID Connect a besoin est publié à une adresse. La plupart se configurent avec elle seule.

cURL
curl https://auth.learnya.ai/.well-known/openid-configuration
Réponse
{
  "issuer": "https://auth.learnya.ai",
  "authorization_endpoint": "https://auth.learnya.ai/authorize",
  "token_endpoint": "https://auth.learnya.ai/token",
  "jwks_uri": "https://auth.learnya.ai/.well-known/jwks.json",
  "grant_types_supported": [
    "authorization_code",
    "refresh_token",
    "client_credentials",
    "urn:ietf:params:oauth:grant-type:token-exchange"
  ],
  "code_challenge_methods_supported": ["S256"]
}

Quel flux choisir

Votre casFlux OAuth
Une personne se connecte à votre applicationauthorization_code
Votre serveur agit en son propre nomclient_credentials
Garder une session ouverterefresh_token
Un service agit pour le compte d’un autretoken-exchange

Code d’autorisation avec PKCE

PKCE est obligatoire pour toutes les applications, avec la méthode S256. L’adresse de retour doit correspondre exactement à celle enregistrée.

  1. Envoyer la personne se connecter

    HTTP
    GET https://auth.learnya.ai/authorize
      ?response_type=code
      &client_id=lyc_your_client
      &redirect_uri=https://app.example.ch/callback
      &scope=openid profile email offline_access
      &state=a value you check on return
      &code_challenge=BASE64URL(SHA256(verifier))
      &code_challenge_method=S256
  2. Échanger le code contre des jetons

    cURL
    curl https://auth.learnya.ai/token \
      -u "lyc_your_client:$CLIENT_SECRET" \
      -d grant_type=authorization_code \
      -d code=the_code_from_the_callback \
      -d redirect_uri=https://app.example.ch/callback \
      -d code_verifier=the_verifier_you_generated
    Réponse
    {
      "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6ImF0K2p3dCJ9…",
      "token_type": "Bearer",
      "expires_in": 900,
      "refresh_token": "…",
      "id_token": "eyJhbGciOiJSUzI1NiJ9…",
      "scope": "openid profile email offline_access"
    }

Vérifier un jeton

Les jetons d’accès sont des JWT signés en RS256. Vérifiez-les avec les clés publiques publiées, sans secret partagé. Cinq contrôles comptent : l’algorithme fixé à RS256, le type at+jwt, l’émetteur, votre audience et l’expiration.

import jwt from "jsonwebtoken"

const ISSUER = "https://auth.learnya.ai"
const AUDIENCE = "https://api.example.ch"

// keyFor maps a kid to a public key from the JWKS.
export function verifyAccessToken(token, keyFor) {
  const decoded = jwt.decode(token, { complete: true })
  if (!decoded?.header.kid) throw new Error("no kid in header")
  if (decoded.header.typ !== "at+jwt")
    throw new Error("not an access token")
  return jwt.verify(token, keyFor(decoded.header.kid), {
    algorithms: ["RS256"],
    issuer: ISSUER,
    audience: AUDIENCE,
  })
}

Aussi disponible

FonctionPour
Requêtes d’autorisation pousséesEnvoyer la demande au serveur plutôt que dans l’adresse
DPoPLier un jeton à une clé que détient votre application
Révocation et introspectionCouper un jeton, ou demander s’il est encore valable
DéconnexionFermer la session Learnya depuis votre application

Enregistrer votre application

Chaque application est enregistrée par Learnya, avec ses adresses de retour exactes. Écrivez-nous avec le nom de votre application, ses adresses de retour et les informations dont vous avez besoin sur la personne.

Enregistrer une application