Pular para o conteúdo principal

Convenção do Core SDK

Convenções básicas​

  • O core deve conter apenas funções independentes de plataforma.
  • O core deve ser nomeado como {$language} e estar sob o diretório raiz do repositório. Ex.: logto/js/js, logto/kotlin/kotlin.
  • O pacote core deve ser nomeado como {$language} sob o escopo Logto. Ex.: @logto/js, io.logto.sdk:kotlin.

Requisitos básicos​

Qualquer core SDK deve conter:

  • Tipos
  • Funções utilitárias
  • Funções principais

Tipos​

OidcConfigResponse​

A configuração do provedor de identidade, que pode ser recuperada via a API /oidc/.well-known/openid-configuration.

Propriedades

NomeTipo
authorizationEndpointstring
tokenEndpointstring
endSessionEndpointstring
revocationEndpointstring
jwksUristring
issuerstring

CodeTokenResponse​

Os dados de resposta de /oidc/token (por solicitação de autorização).

Propriedades

NomeTipoObrigatório
accessTokenstring✅
refreshTokenstring
idTokenstring✅
scopestring✅
expiresInnumber✅

RefreshTokenResponse​

Os dados de resposta de /oidc/token (por token de atualização) ao atualizar tokens por um token de atualização.

Propriedades

NomeTipoObrigatório
accessTokenstring✅
refreshTokenstring✅
idTokenstring
scopestring✅
expiresInnumber✅

IdTokenClaims​

Reivindicações carregadas pelo token de ID.

Propriedades

NomeTipoObrigatório
substring✅
audstring✅
expnumber✅
iatnumber✅
issstring✅
atHashstring
usernamestring
namestring
avatarstring

Funções utilitárias​

generateCodeVerifier​

Gera um verificador de código.
O comprimento do verificador de código é fixado em 64.
O valor de retorno DEVE ser criptografado para uma string em formato base64 segura para URL.

Referência

Parâmetros

Nenhum.

Tipo de Retorno

string

generateCodeChallenge​

Gera um desafio de código com base em um verificador de código.
Este método criptografa o verificador de código e retorna o resultado em um formato Base64 seguro para URL.
Nós fixamos o algoritmo de criptografia como SHA-256 no Logto V1.

Referência

Parâmetros

NomeTipoNotas
codeVerifierstringGerado por generateCodeVerifier

Tipo de Retorno

string

generateState​

"State" é usado para prevenir o ataque CSRF.
O comprimento do "state" é fixado em 64.
A string de resultado a ser retornada DEVE ser criptografada para uma string em formato base64 segura para URL.

Referência

Parâmetros

Nenhum.

Tipo de Retorno

string

decodeIdToken​

Decodifica um Token de ID sem verificação de segredo.
Retorna um IdTokenClaims que carrega todas as reivindicações do token na seção de payload.

Parâmetros

NomeTipo
tokenstring

Tipo de Retorno

IdTokenClaims

Lança

  • O token não é um JWT válido.

verifyIdToken​

Verifica se um Token de ID é legal.

Verificar Chave de Assinatura

OIDC suporta o JSON Web Key Set. Esta função aceita um objeto JsonWebKeySet de uma biblioteca de terceiros (jose) para verificação.

// Exemplo de JsonWebKeySet
{
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "xxxx",
"e": "xxxx",
"n": "xxxx"
}
]
}

Verificar Reivindicações

  • Verificar se o iss no Token de ID corresponde ao emissor deste token.
  • Verificar se a aud (Público) reivindicação é igual ao ID do cliente.
  • Verificar se o tempo atual é anterior ao tempo de expiração.
  • Verificar se o tempo de emissão (iat) não é mais do que +/- 1 minuto no tempo atual.

Referência

Parâmetros

NomeTipo
idTokenstring
clientIdstring
issuerstring
jwksJsonWebKeySet

Tipo de Retorno

void

Lança

  • Falha na verificação da chave de assinatura
  • Falha na verificação das reivindicações

verifyAndParseCodeFromCallbackUri​

Verifica se o callbackUri de login é legal e retorna o code extraído do callbackUri.

Verificar URI de Callback

  • Verificar se o callbackUri deve começar com redirectUri
  • Verificar se não há error no callbackUri (Consulte Resposta de Erro no URI de redirecionamento).
  • Verificar se o callbackUri contém state, que deve ser igual ao valor state que você especificou em generateSignInUri.
  • Verificar se o callbackUri contém o valor do parâmetro code, que você usará ao solicitar /oidc/token (por token de atualização).

Parâmetros

NomeTipo
callbackUristring
redirectUristring
statestring

Tipo de Retorno

string

Lança

  • Falhas nas verificações

Funções principais​

fetchOidcConfig​

Retorna OidcConfigResponse solicitando a /oidc/.well-known/openid-configuration.

Parâmetros

NomeTipoNotas
endpointstringO endpoint do serviço OIDC

Tipo de Retorno

OidcConfigResponse

Lança

  • Falha na busca

generateSignInUri​

Parâmetros

NomeTipoObrigatórioNotas
authorizationEndpointstring✅
clientIdstring✅
redirectUristring✅
codeChallengestring✅
statestring✅
scopesstring[]A implementação pode variar de acordo com as especificações da linguagem.
resourcesstring[]A implementação pode variar de acordo com as especificações da linguagem.
promptstringPadrão: consent.

A URL será gerada com base em authorizationEndpoint e conterá os seguintes parâmetros de consulta:

Parâmetros de Consulta da URL de Login

Chave de ConsultaObrigatórioNotas
client_id✅
redirect_uri✅
code_challenge✅
code_challenge_method✅Fixado como S256.
state✅
scope✅scope sempre contém openid e offline_access, mesmo que o escopo de entrada forneça um valor nulo ou vazio.
resourcePodemos adicionar resource à uri mais de uma vez, o backend os converterá como uma lista. ex. resource=a&resource=b
response_type✅Fixado como code.
prompt✅

Tipo de Retorno

string

generateSignOutUri​

Parâmetros

NomeTipoObrigatório
endSessionEndpointstring✅
idTokenstring✅
postLogoutRedirectUristring

A URL a ser gerada será baseada em endSessionEndpoint e conterá os seguintes parâmetros de consulta:

Parâmetros de Consulta da URL de Logout

Chave de ConsultaObrigatórioNotas
id_token_hint✅o parâmetro idToken informado
post_logout_redirect_urio parâmetro postLogoutRedirectUri informado

Tipo de Retorno

string

fetchTokenByAuthorizationCode​

Busca um token (CodeTokenResponse) solicitando a /oidc/token (por código de autorização).

Parâmetros

NomeTipoObrigatório
tokenEndpointstring✅
codestring✅
codeVerifierstring✅
clientIdstring✅
redirectUristring✅
resourcestring

Requisição HTTP

  • Endpoint: /oidc/token
  • Método: POST
  • Content-Type: application/x-www-form-urlencoded
  • Payload:
Chave de ConsultaTipoObrigatório
grant_typestring: 'authorization_code'✅
codestring✅
code_verifierstring✅
client_idstring✅
redirect_uristring✅
resourcestring

Tipo de Retorno

CodeTokenResponse

Lança

  • Falha na busca

fetchTokenByRefreshToken​

Busca um token (RefreshTokenTokenResponse) via /oidc/token (por token de atualização).

Parâmetros

NomeTipoObrigatório
tokenEndpointstring✅
clientIdstring✅
refreshTokenstring✅
resourcestring
scopesstring[]

Requisição HTTP

  • Endpoint: /oidc/token
  • Método: POST
  • Content-Type: application/x-www-form-urlencoded
  • Payload:
Chave de ConsultaTipoObrigatórioNotas
grant_typestring: 'refresh_token'✅
refresh_tokenstring✅
client_idstring✅
resourcestring
scopestringunimos os valores de scopes com espaço para construir esta string scope

Tipo de Retorno

RefreshTokenTokenResponse

Lança

  • Falha na busca

revoke​

Solicita à API /oidc/token/revocation para notificar o servidor de autorização que um token de atualização ou acesso obtido anteriormente não é mais necessário.

Parâmetros

NomeTipoNotas
revocationEndpointstring
clientIdstring
tokenstringtoken a ser revogado

Requisição HTTP

  • Endpoint: /oidc/token/revocation
  • Método: POST
  • Content-Type: application/x-www-form-urlencoded
  • Payload:
Chave de ConsultaTipo
client_idstring
tokenstring

Tipo de Retorno

void

Lança

  • Falha na revogação