DocumentaçãoIniciar sessão com Learnya

Operar

Iniciar sessão com Learnya

Permite que as pessoas iniciem sessão na tua aplicação com a sua conta Learnya. OAuth 2.1 e OpenID Connect, em auth.learnya.ai.

Nesta página
  1. O documento de descoberta
  2. Que fluxo escolher
  3. Código de autorização com PKCE
  4. Verificar um token
  5. Também disponível
  6. Registar a tua aplicação

O documento de descoberta

Tudo o que uma biblioteca OpenID Connect precisa está publicado num endereço. A maioria configura-se só com ele.

cURL
curl https://auth.learnya.ai/.well-known/openid-configuration
Resposta
{
  "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"]
}

Que fluxo escolher

O teu casoFluxo OAuth
Uma pessoa inicia sessão na tua aplicaçãoauthorization_code
O teu servidor age em nome próprioclient_credentials
Manter uma sessão abertarefresh_token
Um serviço age em nome de outrotoken-exchange

Código de autorização com PKCE

O PKCE é obrigatório para todas as aplicações, com o método S256. O endereço de redirecionamento tem de corresponder exatamente ao que foi registado.

  1. Enviar a pessoa para iniciar sessão

    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. Trocar o código por tokens

    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
    Resposta
    {
      "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6ImF0K2p3dCJ9…",
      "token_type": "Bearer",
      "expires_in": 900,
      "refresh_token": "…",
      "id_token": "eyJhbGciOiJSUzI1NiJ9…",
      "scope": "openid profile email offline_access"
    }

Verificar um token

Os tokens de acesso são JWT assinados em RS256. Verifica-os com as chaves públicas publicadas, sem segredo partilhado. Contam cinco verificações: o algoritmo fixado em RS256, o tipo at+jwt, o emissor, a tua audiência e a expiração.

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,
  })
}

Também disponível

FuncionalidadePara
Pedidos de autorização enviados previamenteEnviar o pedido ao servidor em vez de o colocar no endereço
DPoPAssociar um token a uma chave detida pela tua aplicação
Revogação e introspeçãoInvalidar um token, ou perguntar se ainda é válido
Terminar sessãoTerminar a sessão Learnya a partir da tua aplicação

Registar a tua aplicação

Cada aplicação é registada pela Learnya, com os seus endereços de redirecionamento exatos. Escreve-nos com o nome da tua aplicação, os seus endereços de redirecionamento e as informações de que precisas sobre a pessoa.

Registar uma aplicação