oauth-ananta
v2.0.0
Published
SDK para OAuth de Ananta (Authorization Code + PKCE)
Readme
oauth-ananta
SDK de Node.js para el sistema OAuth de Ananta (Authorization Code + PKCE), con soporte para los scopes ananta.v1, ananta.v2, ananta.v3.
La URL base de la API se define por el usuario en tu configuración.
Instalación
npm i oauth-anantaFlujo: app pública (PKCE) (recomendado)
const { createOAuthAnantaClient, Scopes } = require('oauth-ananta')
const client = createOAuthAnantaClient({
baseUrl: 'https://TU-DOMINIO',
clientId: 'TU_CLIENT_ID',
redirectUri: 'https://TU-APP/callback',
scopes: [Scopes.V1, Scopes.V2],
pkce: true
})
const { url, codeVerifier, state } = client.authorizationUrl()
console.log(url)
// guarda codeVerifier + state en sesión/cookieEn tu callback:
const { code, state } = req.query
// valida state, recupera codeVerifier
const token = await client.exchangeCodeForToken({ code, codeVerifier })
const me = await client.userInfo(token.access_token)Flujo: backend confidencial (client secret)
const { createOAuthAnantaClient, Scopes } = require('oauth-ananta')
const client = createOAuthAnantaClient({
baseUrl: 'https://TU-DOMINIO',
clientId: 'TU_CLIENT_ID',
clientSecret: process.env.OAUTH_CLIENT_SECRET,
redirectUri: 'https://TU-APP/callback',
scopes: [Scopes.V1],
authMethod: 'basic'
})
const { url } = client.authorizationUrl({ usePkce: false })Scopes y claims
ananta.v1 devuelve claims básicos.
ananta.v2 agrega:
key
ananta.v3 agrega:
monthly_limitcurrent_month_requests
El endpoint /oauth/userinfo devuelve el objeto de usuario según los scopes otorgados.
Métodos
authorizationUrl({ state?, prompt?, usePkce? })→{ url, state, codeVerifier? }exchangeCodeForToken({ code, codeVerifier? })→ tokens (access_token,refresh_token,id_token)userInfo(accessToken)→ claims del usuariorevokeToken(token)→ revoca access/refresh tokenclientInfo(clientId?)→ info pública del clientopenIdConfiguration()→ metadata estilo OIDC
Errores
Si la API responde con error HTTP, se lanza OAuthAnantaError con:
statusbody
const { OAuthAnantaError } = require('oauth-ananta')
try {
await client.userInfo('...')
} catch (e) {
if (e instanceof OAuthAnantaError) {
console.log(e.status, e.body)
}
}Notas
- El servidor exige PKCE para clientes
public. - El servidor actual solo implementa
grant_type=authorization_code. id_tokenes HS256 y no se puede validar sin el secreto del servidor. Si necesitas inspeccionarlo, puedes decodificarlo sin verificar firma.
const { decodeJwt } = require('oauth-ananta')
const decoded = decodeJwt(token.id_token)Documentación adicional
Revisa la carpeta docs/.
