oidc-client
Version:
OpenID Connect (OIDC) & OAuth2 client library
387 lines (294 loc) • 11.1 kB
TypeScript
/* Provides a namespace for when the library is loaded outside a module loader environment */
export as namespace Oidc;
export interface Logger {
error(message?: any, ...optionalParams: any[]): void;
info(message?: any, ...optionalParams: any[]): void;
debug(message?: any, ...optionalParams: any[]): void;
warn(message?: any, ...optionalParams: any[]): void;
}
export interface AccessTokenEvents {
load(container: User): void;
unload(): void;
addAccessTokenExpiring(callback: (...ev: any[]) => void): void;
removeAccessTokenExpiring(callback: (...ev: any[]) => void): void;
addAccessTokenExpired(callback: (...ev: any[]) => void): void;
removeAccessTokenExpired(callback: (...ev: any[]) => void): void;
}
export class InMemoryWebStorage {
getItem(key: string): any;
setItem(key: string, value: any): any;
removeItem(key: string): any;
key(index: number): any;
length?: number;
}
export class Log {
static readonly NONE: number;
static readonly ERROR: number;
static readonly WARN: number;
static readonly INFO: number;
static readonly DEBUG: number;
static reset(): void;
static level: number;
static logger: Logger;
static debug(message?: any, ...optionalParams: any[]): void;
static info(message?: any, ...optionalParams: any[]): void;
static warn(message?: any, ...optionalParams: any[]): void;
static error(message?: any, ...optionalParams: any[]): void;
}
export interface MetadataService {
new (settings: OidcClientSettings): MetadataService;
metadataUrl?: string;
getMetadata(): Promise<OidcMetadata>;
getIssuer(): Promise<string>;
getAuthorizationEndpoint(): Promise<string>;
getUserInfoEndpoint(): Promise<string>;
getTokenEndpoint(): Promise<string | undefined>;
getCheckSessionIframe(): Promise<string | undefined>;
getEndSessionEndpoint(): Promise<string | undefined>;
getRevocationEndpoint(): Promise<string | undefined>;
getKeysEndpoint(): Promise<string | undefined>;
getSigningKeys(): Promise<any[]>;
}
export interface MetadataServiceCtor {
(settings: OidcClientSettings, jsonServiceCtor?: any): MetadataService;
}
export interface ResponseValidator {
validateSigninResponse(state: any, response: any): Promise<SigninResponse>;
validateSignoutResponse(state: any, response: any): Promise<SignoutResponse>;
}
export interface ResponseValidatorCtor {
(settings: OidcClientSettings, metadataServiceCtor?: MetadataServiceCtor, userInfoServiceCtor?: any): ResponseValidator;
}
export interface SigninRequest {
url: string;
state: any;
}
export interface SignoutRequest {
url: string;
state?: any;
}
export class OidcClient {
constructor(settings: OidcClientSettings);
readonly settings: OidcClientSettings;
createSigninRequest(args?: any): Promise<SigninRequest>;
processSigninResponse(url?: string, stateStore?: StateStore): Promise<SigninResponse>;
createSignoutRequest(args?: any): Promise<SignoutRequest>;
processSignoutResponse(url?: string, stateStore?: StateStore): Promise<SignoutResponse>;
clearStaleState(stateStore: StateStore): Promise<any>;
readonly metadataService: MetadataService;
}
export interface OidcClientSettings {
authority?: string;
readonly metadataUrl?: string;
metadata?: any;
signingKeys?: any[];
client_id?: string;
client_secret?: string;
readonly response_type?: string;
readonly response_mode?: string;
readonly scope?: string;
readonly redirect_uri?: string;
readonly post_logout_redirect_uri?: string;
readonly popup_post_logout_redirect_uri?: string;
readonly prompt?: string;
readonly display?: string;
readonly max_age?: number;
readonly ui_locales?: string;
readonly acr_values?: string;
readonly filterProtocolClaims?: boolean;
readonly loadUserInfo?: boolean;
readonly staleStateAge?: number;
readonly clockSkew?: number;
readonly stateStore?: StateStore;
readonly userInfoJwtIssuer?: 'ANY' | 'OP' | string;
ResponseValidatorCtor?: ResponseValidatorCtor;
MetadataServiceCtor?: MetadataServiceCtor;
extraQueryParams?: {};
}
export class UserManager extends OidcClient {
constructor(settings: UserManagerSettings);
readonly settings: UserManagerSettings;
clearStaleState(): Promise<void>;
getUser(): Promise<User>;
storeUser(user:User): Promise<void>;
removeUser(): Promise<void>;
signinPopup(args?: any): Promise<User>;
signinPopupCallback(url?: string): Promise<any>;
signinSilent(args?: any): Promise<User>;
signinSilentCallback(url?: string): Promise<any>;
signinRedirect(args?: any): Promise<any>;
signinRedirectCallback(url?: string): Promise<User>;
signoutRedirect(args?: any): Promise<any>;
signoutRedirectCallback(url?: string): Promise<any>;
signoutPopup(args?: any): Promise<any>;
signoutPopupCallback(url?: string, keepOpen?: boolean): Promise<void>;
signoutPopupCallback(keepOpen?: boolean): Promise<void>;
querySessionStatus(args?: any): Promise<any>;
revokeAccessToken(): Promise<void>;
startSilentRenew(): void;
stopSilentRenew(): void;
events: UserManagerEvents;
}
export interface UserManagerEvents extends AccessTokenEvents {
load(user: User): any;
unload(): any;
addUserLoaded(callback: (...ev: any[]) => void): void;
removeUserLoaded(callback: (...ev: any[]) => void): void;
addUserUnloaded(callback: (...ev: any[]) => void): void;
removeUserUnloaded(callback: (...ev: any[]) => void): void;
addSilentRenewError(callback: (...ev: any[]) => void): void;
removeSilentRenewError(callback: (...ev: any[]) => void): void;
addUserSignedOut(callback: (...ev: any[]) => void): void;
removeUserSignedOut(callback: (...ev: any[]) => void): void;
addUserSessionChanged(callback: (...ev: any[]) => void): void;
removeUserSessionChanged(callback: (...ev: any[]) => void): void;
}
export interface UserManagerSettings extends OidcClientSettings {
readonly popup_redirect_uri?: string;
readonly popupWindowFeatures?: string;
readonly popupWindowTarget?: any;
readonly silent_redirect_uri?: any;
readonly silentRequestTimeout?: any;
readonly automaticSilentRenew?: boolean;
readonly includeIdTokenInSilentRenew?: boolean;
readonly monitorSession?: boolean;
readonly checkSessionInterval?: number;
readonly query_status_response_type?: string;
readonly stopCheckSessionOnError?: boolean;
readonly revokeAccessTokenOnSignout?: any;
readonly accessTokenExpiringNotificationTime?: number;
readonly redirectNavigator?: any;
readonly popupNavigator?: any;
readonly iframeNavigator?: any;
readonly userStore?: any;
}
export interface WebStorageStateStoreSettings {
prefix?: string;
store?: any;
}
export interface StateStore {
set(key: string, value: any): Promise<void>;
get(key: string): Promise<any>;
remove(key: string): Promise<any>;
getAllKeys(): Promise<string[]>;
}
export class WebStorageStateStore implements StateStore {
constructor(settings: WebStorageStateStoreSettings);
set(key: string, value: any): Promise<void>;
get(key: string): Promise<any>;
remove(key: string): Promise<any>;
getAllKeys(): Promise<string[]>;
}
export interface SigninResponse {
new (url: string, delimiter?: string): SigninResponse;
access_token: string;
code: string;
error: string;
error_description: string;
error_uri: string;
id_token: string;
profile: any;
scope: string;
session_state: any;
state: any;
token_type: string;
readonly expired: boolean | undefined;
readonly expires_in: number | undefined;
readonly isOpenIdConnect: boolean;
readonly scopes: string[];
}
export interface SignoutResponse {
new (url: string): SignoutResponse;
error: string;
error_description: string;
error_uri: string;
state: any;
}
export interface UserSettings {
id_token: string;
session_state: any;
access_token: string;
refresh_token: string;
token_type: string;
scope: string;
profile: any;
expires_at: number;
state: any;
}
export class User {
constructor(settings: UserSettings);
id_token: string;
session_state: any;
access_token: string;
refresh_token: string;
token_type: string;
scope: string;
profile: any;
expires_at: number;
state: any;
toStorageString(): string;
readonly expires_in: number | undefined;
readonly expired: boolean | undefined;
readonly scopes: string[];
}
export class CordovaPopupWindow {
constructor(params: any);
navigate(params: any): Promise<any>;
promise: Promise<any>;
}
export class CordovaPopupNavigator {
prepare(params: any): Promise<CordovaPopupWindow>;
}
export class CordovaIFrameNavigator {
prepare(params: any): Promise<CordovaPopupWindow>;
}
export interface OidcMetadata {
issuer: string;
authorization_endpoint:string;
token_endpoint: string;
token_endpoint_auth_methods_supported:string[];
token_endpoint_auth_signing_alg_values_supported: string[];
userinfo_endpoint: string;
check_session_iframe: string;
end_session_endpoint: string;
jwks_uri: string;
registration_endpoint: string;
scopes_supported: string[];
response_types_supported: string[];
acr_values_supported: string[];
subject_types_supported: string[];
userinfo_signing_alg_values_supported: string[];
userinfo_encryption_alg_values_supported: string[];
userinfo_encryption_enc_values_supported: string[];
id_token_signing_alg_values_supported: string[];
id_token_encryption_alg_values_supported: string[];
id_token_encryption_enc_values_supported: string[];
request_object_signing_alg_values_supported: string[];
display_values_supported: string[];
claim_types_supported: string[];
claims_supported: string[];
claims_parameter_supported: boolean;
service_documentation: string;
ui_locales_supported: string[];
revocation_endpoint: string;
introspection_endpoint: string;
frontchannel_logout_supported: boolean;
frontchannel_logout_session_supported: boolean;
backchannel_logout_supported: boolean;
backchannel_logout_session_supported: boolean;
grant_types_supported: string[];
response_modes_supported: string[];
code_challenge_methods_supported: string[];
}
export interface CheckSessionIFrame {
new (callback: () => void, client_id: string, url: string, interval?: number, stopOnError?: boolean): CheckSessionIFrame
load(): Promise<void>;
start(session_state: string): void;
stop(): void;
}
export interface CheckSessionIFrameCtor {
(callback: () => void, client_id: string, url: string, interval?: number, stopOnError?: boolean): CheckSessionIFrame;
}
export class SessionMonitor {
constructor(userManager: UserManager, CheckSessionIFrameCtor: CheckSessionIFrameCtor);
}