auth0
Version:
Auth0 Node.js SDK for the Management API v2.
159 lines (158 loc) • 4.94 kB
TypeScript
import { BaseAuthAPI } from "./base-auth-api.js";
/**
* The response from the authorize endpoint.
*/
export type AuthorizeResponse = {
/**
* The authorization request ID.
*/
auth_req_id: string;
/**
* The duration in seconds until the authentication request expires.
*/
expires_in: number;
/**
* The interval in seconds to wait between poll requests.
*/
interval: number;
};
/**
* Options for the authorize request.
*/
export type AuthorizeOptions = {
/**
* A human-readable string intended to be displayed on both the device calling /bc-authorize and the user’s authentication device.
*/
binding_message: string;
/**
* A space-separated list of OIDC and custom API scopes.
*/
scope: string;
/**
* Unique identifier of the audience for an issued token.
*/
audience?: string;
/**
* Custom expiry time in seconds for this request.
* @deprecated Use {@link AuthorizeOptions.requested_expiry} instead.
*/
request_expiry?: string;
/**
* Custom expiry time in seconds for this request.
*/
requested_expiry?: string;
/**
* The user ID.
*/
userId: string;
/**
* Optional parameter for subject issuer context.
*/
subjectIssuerContext?: string;
/**
* Optional authorization details to use Rich Authorization Requests (RAR).
* @see https://auth0.com/docs/get-started/apis/configure-rich-authorization-requests
*/
authorization_details?: string;
} & Record<string, string>;
export interface AuthorizationDetails {
readonly type: string;
readonly [parameter: string]: unknown;
}
/**
* The response from the token endpoint.
*/
export type TokenResponse = {
/**
* The access token.
*/
access_token: string;
/**
* The refresh token, available with the `offline_access` scope.
*/
refresh_token?: string;
/**
* The user's ID Token.
*/
id_token: string;
/**
* The token type of the access token.
*/
token_type?: string;
/**
* The duration in seconds that the access token is valid.
*/
expires_in: number;
/**
* The scopes associated with the token.
*/
scope: string;
/**
* Optional authorization details when using Rich Authorization Requests (RAR).
* @see https://auth0.com/docs/get-started/apis/configure-rich-authorization-requests
*/
authorization_details?: AuthorizationDetails[];
};
/**
* Options for the token request.
*/
export type TokenOptions = {
/**
* The authorization request ID.
*/
auth_req_id: string;
};
/**
* Interface for the backchannel authentication.
*/
export interface IBackchannel {
authorize: (options: AuthorizeOptions) => Promise<AuthorizeResponse>;
backchannelGrant: (options: TokenOptions) => Promise<TokenResponse>;
}
/**
* Class implementing the backchannel authentication flow.
*/
export declare class Backchannel extends BaseAuthAPI implements IBackchannel {
/**
* Initiates a CIBA authorization request.
*
* @param {AuthorizeOptions} options - The options for the request.
* @returns {Promise<AuthorizeResponse>} - The authorization response.
*
* @throws {Error} - If the request fails.
*/
authorize({ userId, ...options }: AuthorizeOptions): Promise<AuthorizeResponse>;
/**
* Handles the backchannel grant flow for authentication. Client can poll this method at regular intervals to check if the backchannel auth request has been approved.
*
* @param {string} auth_req_id - The authorization request ID. This value is returned from the call to /bc-authorize. Once you have exchanged an auth_req_id for an ID and access token, it is no longer usable.
* @returns {Promise<TokenResponse>} - A promise that resolves to the token response.
*
* @throws {Error} - Throws an error if the request fails.
*
* If the authorizing user has not yet approved or rejected the request, you will receive a response like this:
* ```json
* {
* "error": "authorization_pending",
* "error_description": "The end-user authorization is pending"
* }
* ```
*
* If the authorizing user rejects the request, you will receive a response like this:
* ```json
* {
* "error": "access_denied",
* "error_description": "The end-user denied the authorization request or it has been expired"
* }
* ```
*
* If you are polling too quickly (faster than the interval value returned from /bc-authorize), you will receive a response like this:
* ```json
* {
* "error": "slow_down",
* "error_description": "You are polling faster than allowed. Try again in 10 seconds."
* }
* ```
*/
backchannelGrant({ auth_req_id }: TokenOptions): Promise<TokenResponse>;
}