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_methodFixado como S256.
state
scopescope 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_typeFixado 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_hinto 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