SDK para OAuth de Ananta (Authorization Code + PKCE)
npm install oauth-anantaSDK 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.
``bash`
npm i oauth-ananta
`js
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/cookie
`
En tu callback:
`js
const { code, state } = req.query
// valida state, recupera codeVerifier
const token = await client.exchangeCodeForToken({ code, codeVerifier })
const me = await client.userInfo(token.access_token)
`
`js
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 })
`
ananta.v1 devuelve claims básicos.
ananta.v2 agrega:key
-
ananta.v3 agrega:monthly_limit
- current_month_requests
-
El endpoint /oauth/userinfo devuelve el objeto de usuario según los scopes otorgados.
- 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
Si la API responde con error HTTP, se lanza OAuthAnantaError con:status
- body
-
`js
const { OAuthAnantaError } = require('oauth-ananta')
try {
await client.userInfo('...')
} catch (e) {
if (e instanceof OAuthAnantaError) {
console.log(e.status, e.body)
}
}
`
- El servidor exige PKCE para clientes public.grant_type=authorization_code
- El servidor actual solo implementa .id_token
- es HS256 y no se puede validar sin el secreto del servidor. Si necesitas inspeccionarlo, puedes decodificarlo sin verificar firma.
`js`
const { decodeJwt } = require('oauth-ananta')
const decoded = decodeJwt(token.id_token)
Revisa la carpeta docs/`.