Saltar al contenido principal

Convención del Core SDK

Convenciones básicas​

  • El núcleo debe contener solo funciones independientes de la plataforma.
  • El núcleo debe nombrarse como {$language} y estar bajo el directorio raíz del repositorio. Por ejemplo, logto/js/js, logto/kotlin/kotlin.
  • El paquete del núcleo debe nombrarse como {$language} bajo el ámbito de Logto. Por ejemplo, @logto/js, io.logto.sdk:kotlin.

Requisitos básicos​

Cualquier Core SDK debe contener:

  • Tipos
  • Funciones utilitarias
  • Funciones principales

Tipos​

OidcConfigResponse​

La configuración del proveedor de identidad, que se puede obtener a través de la API /oidc/.well-known/openid-configuration.

Propiedades

NombreTipo
authorizationEndpointstring
tokenEndpointstring
endSessionEndpointstring
revocationEndpointstring
jwksUristring
issuerstring

CodeTokenResponse​

Los datos de respuesta de /oidc/token (por código de autorización).

Propiedades

NombreTipoRequerido
accessTokenstring✅
refreshTokenstring
idTokenstring✅
scopestring✅
expiresInnumber✅

RefreshTokenResponse​

Los datos de respuesta de /oidc/token (por token de actualización) al refrescar tokens mediante un token de actualización.

Propiedades

NombreTipoRequerido
accessTokenstring✅
refreshTokenstring✅
idTokenstring
scopestring✅
expiresInnumber✅

IdTokenClaims​

Reclamos llevados por el token de ID.

Propiedades

NombreTipoRequerido
substring✅
audstring✅
expnumber✅
iatnumber✅
issstring✅
atHashstring
usernamestring
namestring
avatarstring

Funciones utilitarias​

generateCodeVerifier​

Generar un verificador de código.
La longitud del verificador de código está codificada como 64.
El valor de retorno DEBE estar encriptado a una cadena en formato base64 segura para URL.

Referencia

Parámetros

Ninguno.

Tipo de retorno

string

generateCodeChallenge​

Generar un desafío de código basado en un verificador de código.
Este método encripta el verificador de código y devuelve el resultado en un formato Base64 seguro para URL.
Codificamos el algoritmo de encriptación como SHA-256 en Logto V1.

Referencia

Parámetros

NombreTipoNotas
codeVerifierstringGenerado por generateCodeVerifier

Tipo de retorno

string

generateState​

"State" se utiliza para prevenir el ataque CSRF.
La longitud del "state" está codificada como 64.
La cadena de resultado que se devolverá DEBE estar encriptada a una cadena en formato base64 segura para URL.

Referencia

Parámetros

Ninguno.

Tipo de retorno

string

decodeIdToken​

Decodificar un Token de ID sin verificación secreta.
Devuelve un IdTokenClaims que lleva todos los reclamos del token en la sección de carga útil.

Parámetros

NombreTipo
tokenstring

Tipo de retorno

IdTokenClaims

Lanza

  • El token no es un JWT válido.

verifyIdToken​

Verificar si un Token de ID es legal.

Verificar clave de firma

OIDC admite el JSON Web Key Set. Esta función acepta un objeto JsonWebKeySet de una biblioteca de terceros (jose) para la verificación.

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

Verificar reclamos

  • Verificar que el iss en el Token de ID coincida con el emisor de este token.
  • Verificar que el reclamo aud (audiencia) sea igual al ID del cliente.
  • Verificar que el tiempo actual sea antes del tiempo de expiración.
  • Verificar que el tiempo de emisión (iat) no sea más de +/- 1 minuto respecto al tiempo actual.

Referencia

Parámetros

NombreTipo
idTokenstring
clientIdstring
issuerstring
jwksJsonWebKeySet

Tipo de retorno

void

Lanza

  • Fallo en la verificación de la clave de firma
  • Fallo en la verificación de reclamos

verifyAndParseCodeFromCallbackUri​

Verificar que el callbackUri de inicio de sesión sea legal y devolver el code extraído de callbackUri.

Verificar URI de Callback

  • Verificar que el callbackUri comience con redirectUri
  • Verificar que no haya error en el callbackUri (Consultar Respuesta de Error en el URI de redirección).
  • Verificar que el callbackUri contenga state, que debe ser igual al valor state que especificaste en generateSignInUri.
  • Verificar que el callbackUri contenga el valor del parámetro code, que usarás al solicitar a /oidc/token (por token de actualización).

Parámetros

NombreTipo
callbackUristring
redirectUristring
statestring

Tipo de retorno

string

Lanza

  • Fallos en las verificaciones

Funciones principales​

fetchOidcConfig​

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

Parámetros

NombreTipoNotas
endpointstringEl endpoint del servicio OIDC

Tipo de retorno

OidcConfigResponse

Lanza

  • Fallo en la obtención

generateSignInUri​

Parámetros

NombreTipoRequeridoNotas
authorizationEndpointstring✅
clientIdstring✅
redirectUristring✅
codeChallengestring✅
statestring✅
scopesstring[]La implementación puede variar según las especificaciones del lenguaje.
resourcesstring[]La implementación puede variar según las especificaciones del lenguaje.
promptstringPredeterminado: consent.

La URL se generará basada en authorizationEndpoint y contendrá los siguientes parámetros de consulta:

Parámetros de consulta de la URL de inicio de sesión

Clave de consultaRequeridoNotas
client_id✅
redirect_uri✅
code_challenge✅
code_challenge_method✅Codificado como S256.
state✅
scope✅scope siempre contiene openid y offline_access, incluso si el scope de entrada proporciona un valor nulo o vacío.
resourcePodemos agregar resource a uri más de una vez, el backend los convertirá en una lista. e.g. resource=a&resource=b
response_type✅Codificado como code.
prompt✅

Tipo de retorno

string

generateSignOutUri​

Parámetros

NombreTipoRequerido
endSessionEndpointstring✅
idTokenstring✅
postLogoutRedirectUristring

La URL a generar se basará en endSessionEndpoint y contendrá los siguientes parámetros de consulta:

Parámetros de consulta de la URL de cierre de sesión

Clave de consultaRequeridoNotas
id_token_hint✅el parámetro idToken ingresado
post_logout_redirect_uriel parámetro postLogoutRedirectUri ingresado

Tipo de retorno

string

fetchTokenByAuthorizationCode​

Obtener un token (CodeTokenResponse) solicitando a /oidc/token (por código de autorización).

Parámetros

NombreTipoRequerido
tokenEndpointstring✅
codestring✅
codeVerifierstring✅
clientIdstring✅
redirectUristring✅
resourcestring

Solicitud HTTP

  • Endpoint: /oidc/token
  • Método: POST
  • Content-Type: application/x-www-form-urlencoded
  • Carga útil:
Clave de consultaTipoRequerido
grant_typestring: 'authorization_code'✅
codestring✅
code_verifierstring✅
client_idstring✅
redirect_uristring✅
resourcestring

Tipo de retorno

CodeTokenResponse

Lanza

  • Fallo en la obtención

fetchTokenByRefreshToken​

Obtener un token (RefreshTokenTokenResponse) a través de /oidc/token (por token de actualización).

Parámetros

NombreTipoRequerido
tokenEndpointstring✅
clientIdstring✅
refreshTokenstring✅
resourcestring
scopesstring[]

Solicitud HTTP

  • Endpoint: /oidc/token
  • Método: POST
  • Content-Type: application/x-www-form-urlencoded
  • Carga útil:
Clave de consultaTipoRequeridoNotas
grant_typestring: 'refresh_token'✅
refresh_tokenstring✅
client_idstring✅
resourcestring
scopestringunimos los valores de scopes con espacio para construir esta cadena scope

Tipo de retorno

RefreshTokenTokenResponse

Lanza

  • Fallo en la obtención

revoke​

Solicitar a la API /oidc/token/revocation para notificar al servidor de autorización que un token de actualización o acceso previamente obtenido ya no es necesario.

Parámetros

NombreTipoNotas
revocationEndpointstring
clientIdstring
tokenstringtoken a revocar

Solicitud HTTP

  • Endpoint: /oidc/token/revocation
  • Método: POST
  • Content-Type: application/x-www-form-urlencoded
  • Carga útil:
Clave de consultaTipo
client_idstring
tokenstring

Tipo de retorno

void

Lanza

  • Fallo en la revocación