URL base
XID es un proveedor de identidad. El dominio de la instancia es el emisor OIDC, la URL base de API, la URL base de Hosted Auth y la URL base de la consola. Las organizaciones aportan política, marca, membresía y aislamiento de recursos.
Empieza leyendo /.well-known/openid-configuration desde el dominio de la instancia. El documento de descubrimiento entrega a tu app los puntos de conexión authorization, token, userinfo, logout y JWKS para ese emisor.
| Superficie | Ruta | Uso previsto |
|---|---|---|
| Descubrimiento OIDC | /.well-known/openid-configuration |
Leer los metadatos del emisor antes de configurar una parte de confianza. |
| Autorización | /authorize |
Redirigir usuarios al flujo unificado de Hosted Auth. |
| Token | /token |
Intercambiar un código de autorización o token de actualización. |
| Userinfo | /userinfo |
Leer declaraciones de un token de acceso válido. |
| API de administración | /v1/* |
Gestiona recursos de organización desde tu servidor. |
Integración mínima
- Crea una aplicación OIDC y registra valores exactos de URI de redirección.
- Usa el flujo de código de autorización con PKCE S256 para clientes de navegador y nativos.
- Validar tokens de ID y tokens de acceso contra el emisor y la URI JWKS.
- Almacena tokens de actualización en el servidor o en un almacén nativo seguro de credenciales.
Solicitud de autorización
sequenceDiagram participant Browser participant RP participant XID RP->>Browser: /authorize + PKCE S256 Browser->>XID: /authorize + PKCE S256 XID->>Browser: /sign-in Browser->>XID: WebAuthn / SSO XID->>Browser: code Browser->>RP: code RP->>XID: /token + PKCE S256 XID->>RP: ID token + access token
const authorizeUrl = new URL('https://xid.dev/authorize')
authorizeUrl.searchParams.set('client_id', clientId)
authorizeUrl.searchParams.set('redirect_uri', redirectUri)
authorizeUrl.searchParams.set('response_type', 'code')
authorizeUrl.searchParams.set('scope', 'openid profile email')
authorizeUrl.searchParams.set('code_challenge', codeChallenge)
authorizeUrl.searchParams.set('code_challenge_method', 'S256')