/* Provides a namespace for when the library is loaded outside a module loader environment */ export as namespace Oidc; export const Version: string; 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; /** Subscribe to events raised prior to the access token expiring */ addAccessTokenExpiring(callback: (...ev: any[]) => void): void; removeAccessTokenExpiring(callback: (...ev: any[]) => void): void; /** Subscribe to events raised after the access token has expired */ 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: 0; static readonly ERROR: 1; static readonly WARN: 2; static readonly INFO: 3; static readonly DEBUG: 4; 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; resetSigningKeys(): void; getMetadata(): Promise; getIssuer(): Promise; getAuthorizationEndpoint(): Promise; getUserInfoEndpoint(): Promise; getTokenEndpoint(optional?: boolean): Promise; getCheckSessionIframe(): Promise; getEndSessionEndpoint(): Promise; getRevocationEndpoint(): Promise; getKeysEndpoint(): Promise; getSigningKeys(): Promise; } export interface MetadataServiceCtor { (settings: OidcClientSettings, jsonServiceCtor?: any): MetadataService; } export interface ResponseValidator { validateSigninResponse(state: any, response: any): Promise; validateSignoutResponse(state: any, response: any): Promise; } 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; processSigninResponse(url?: string, stateStore?: StateStore): Promise; createSignoutRequest(args?: any): Promise; processSignoutResponse(url?: string, stateStore?: StateStore): Promise; clearStaleState(stateStore: StateStore): Promise; readonly metadataService: MetadataService; } export interface OidcClientSettings { /** The URL of the OIDC/OAuth2 provider */ authority?: string; readonly metadataUrl?: string; /** Provide metadata when authority server does not allow CORS on the metadata endpoint */ metadata?: Partial; /** Provide signingKeys when authority server does not allow CORS on the jwks uri */ signingKeys?: any[]; /** Your client application's identifier as registered with the OIDC/OAuth2 */ client_id?: string; client_secret?: string; /** The type of response desired from the OIDC/OAuth2 provider (default: 'id_token') */ readonly response_type?: string; readonly response_mode?: string; /** The scope being requested from the OIDC/OAuth2 provider (default: 'openid') */ readonly scope?: string; /** The redirect URI of your client application to receive a response from the OIDC/OAuth2 provider */ readonly redirect_uri?: string; /** The OIDC/OAuth2 post-logout redirect URI */ readonly post_logout_redirect_uri?: string; /** The OIDC/OAuth2 post-logout redirect URI when using popup */ 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; /** Should OIDC protocol claims be removed from profile (default: true) */ readonly filterProtocolClaims?: boolean; /** Flag to control if additional identity data is loaded from the user info endpoint in order to populate the user's profile (default: true) */ readonly loadUserInfo?: boolean; /** Number (in seconds) indicating the age of state entries in storage for authorize requests that are considered abandoned and thus can be cleaned up (default: 300) */ readonly staleStateAge?: number; /** The window of time (in seconds) to allow the current time to deviate when validating id_token's iat, nbf, and exp values (default: 300) */ readonly clockSkew?: number; readonly clockService?: ClockService; readonly stateStore?: StateStore; readonly userInfoJwtIssuer?: 'ANY' | 'OP' | string; readonly mergeClaims?: boolean; ResponseValidatorCtor?: ResponseValidatorCtor; MetadataServiceCtor?: MetadataServiceCtor; /** An object containing additional query string parameters to be including in the authorization request */ extraQueryParams?: Record; } export class UserManager extends OidcClient { constructor(settings: UserManagerSettings); readonly settings: UserManagerSettings; /** Removes stale state entries in storage for incomplete authorize requests */ clearStaleState(): Promise; /** Load the User object for the currently authenticated user */ getUser(): Promise; storeUser(user: User): Promise; /** Remove from any storage the currently authenticated user */ removeUser(): Promise; /** Trigger a request (via a popup window) to the authorization endpoint. The result of the promise is the authenticated User */ signinPopup(args?: any): Promise; /** Notify the opening window of response from the authorization endpoint */ signinPopupCallback(url?: string): Promise; /** Trigger a silent request (via an iframe or refreshtoken if available) to the authorization endpoint */ signinSilent(args?: any): Promise; /** Notify the parent window of response from the authorization endpoint */ signinSilentCallback(url?: string): Promise; /** Trigger a redirect of the current window to the authorization endpoint */ signinRedirect(args?: any): Promise; /** Process response from the authorization endpoint. */ signinRedirectCallback(url?: string): Promise; /** Trigger a redirect of the current window to the end session endpoint */ signoutRedirect(args?: any): Promise; /** Process response from the end session endpoint */ signoutRedirectCallback(url?: string): Promise; /** Trigger a redirect of a popup window window to the end session endpoint */ signoutPopup(args?: any): Promise; /** Process response from the end session endpoint from a popup window */ signoutPopupCallback(url?: string, keepOpen?: boolean): Promise; signoutPopupCallback(keepOpen?: boolean): Promise; /** Proxy to Popup, Redirect and Silent callbacks */ signinCallback(url?: string): Promise; /** Proxy to Popup and Redirect callbacks */ signoutCallback(url?: string, keepWindowOpen?: boolean): Promise; /** Query OP for user's current signin status */ querySessionStatus(args?: any): Promise; revokeAccessToken(): Promise; /** Enables silent renew */ startSilentRenew(): void; /** Disables silent renew */ stopSilentRenew(): void; events: UserManagerEvents; } export interface SessionStatus { /** Opaque session state used to validate if session changed (monitorSession) */ session_state: string; /** Subject identifier */ sub: string; /** Session ID */ sid?: string; } export interface UserManagerEvents extends AccessTokenEvents { load(user: User): any; unload(): any; /** Subscribe to events raised when user session has been established (or re-established) */ addUserLoaded(callback: UserManagerEvents.UserLoadedCallback): void; removeUserLoaded(callback: UserManagerEvents.UserLoadedCallback): void; /** Subscribe to events raised when a user session has been terminated */ addUserUnloaded(callback: UserManagerEvents.UserUnloadedCallback): void; removeUserUnloaded(callback: UserManagerEvents.UserUnloadedCallback): void; /** Subscribe to events raised when the automatic silent renew has failed */ addSilentRenewError(callback: UserManagerEvents.SilentRenewErrorCallback): void; removeSilentRenewError(callback: UserManagerEvents.SilentRenewErrorCallback): void; /** Subscribe to events raised when the user's signed-in */ addUserSignedIn(callback: UserManagerEvents.UserSignedInCallback): void; removeUserSignedIn(callback: UserManagerEvents.UserSignedInCallback): void; /** Subscribe to events raised when the user's sign-in status at the OP has changed */ addUserSignedOut(callback: UserManagerEvents.UserSignedOutCallback): void; removeUserSignedOut(callback: UserManagerEvents.UserSignedOutCallback): void; /** When `monitorSession` subscribe to events raised when the user session changed */ addUserSessionChanged(callback: UserManagerEvents.UserSessionChangedCallback): void; removeUserSessionChanged(callback: UserManagerEvents.UserSessionChangedCallback): void; } export namespace UserManagerEvents { export type UserLoadedCallback = (user: User) => void; export type UserUnloadedCallback = () => void; export type SilentRenewErrorCallback = (error: Error) => void; export type UserSignedInCallback = () => void; export type UserSignedOutCallback = () => void; export type UserSessionChangedCallback = () => void; } export interface UserManagerSettings extends OidcClientSettings { /** The URL for the page containing the call to signinPopupCallback to handle the callback from the OIDC/OAuth2 */ readonly popup_redirect_uri?: string; /** The features parameter to window.open for the popup signin window. * default: 'location=no,toolbar=no,width=500,height=500,left=100,top=100' */ readonly popupWindowFeatures?: string; /** The target parameter to window.open for the popup signin window (default: '_blank') */ readonly popupWindowTarget?: any; /** The URL for the page containing the code handling the silent renew */ readonly silent_redirect_uri?: any; /** Number of milliseconds to wait for the silent renew to return before assuming it has failed or timed out (default: 10000) */ readonly silentRequestTimeout?: any; /** Flag to indicate if there should be an automatic attempt to renew the access token prior to its expiration (default: false) */ readonly automaticSilentRenew?: boolean; readonly validateSubOnSilentRenew?: boolean; /** Flag to control if id_token is included as id_token_hint in silent renew calls (default: true) */ readonly includeIdTokenInSilentRenew?: boolean; /** Will raise events for when user has performed a signout at the OP (default: true) */ readonly monitorSession?: boolean; /** Interval, in ms, to check the user's session (default: 2000) */ readonly checkSessionInterval?: number; readonly query_status_response_type?: string; readonly stopCheckSessionOnError?: boolean; /** Will invoke the revocation endpoint on signout if there is an access token for the user (default: false) */ readonly revokeAccessTokenOnSignout?: boolean; /** The number of seconds before an access token is to expire to raise the accessTokenExpiring event (default: 60) */ readonly accessTokenExpiringNotificationTime?: number; readonly redirectNavigator?: any; readonly popupNavigator?: any; readonly iframeNavigator?: any; /** Storage object used to persist User for currently authenticated user (default: session storage) */ readonly userStore?: WebStorageStateStore; } export interface ClockService { getEpochTime(): Promise; } export interface WebStorageStateStoreSettings { prefix?: string; store?: any; } export interface StateStore { set(key: string, value: any): Promise; get(key: string): Promise; remove(key: string): Promise; getAllKeys(): Promise; } export class WebStorageStateStore implements StateStore { constructor(settings: WebStorageStateStoreSettings); set(key: string, value: any): Promise; get(key: string): Promise; remove(key: string): Promise; getAllKeys(): Promise; } export interface SigninResponse { new(url: string, delimiter?: string): SigninResponse; access_token: string; /** Refresh token returned from the OIDC provider (if requested, via the * 'offline_access' scope) */ refresh_token?: string; code: string; error: string; error_description: string; error_uri: string; id_token: string; profile: any; scope: string; session_state: string; 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: string; access_token: string; refresh_token: string; token_type: string; scope: string; profile: Profile; expires_at: number; state: any; } export class User { constructor(settings: UserSettings); /** The id_token returned from the OIDC provider */ id_token: string; /** The session state value returned from the OIDC provider (opaque) */ session_state?: string; /** The access token returned from the OIDC provider. */ access_token: string; /** Refresh token returned from the OIDC provider (if requested) */ refresh_token?: string; /** The token_type returned from the OIDC provider */ token_type: string; /** The scope returned from the OIDC provider */ scope: string; /** The claims represented by a combination of the id_token and the user info endpoint */ profile: Profile; /** The expires at returned from the OIDC provider */ expires_at: number; /** The custom state transferred in the last signin */ state: any; toStorageString(): string; static fromStorageString(storageString: string): User; /** Calculated number of seconds the access token has remaining */ readonly expires_in: number; /** Calculated value indicating if the access token is expired */ readonly expired: boolean; /** Array representing the parsed values from the scope */ readonly scopes: string[]; } export type Profile = IDTokenClaims & ProfileStandardClaims; interface IDTokenClaims { /** Issuer Identifier */ iss: string; /** Subject identifier */ sub: string; /** Audience(s): client_id ... */ aud: string; /** Expiration time */ exp: number; /** Issued at */ iat: number; /** Time when the End-User authentication occurred */ auth_time?: number; /** Time when the End-User authentication occurred */ nonce?: number; /** Access Token hash value */ at_hash?: string; /** Authentication Context Class Reference */ acr?: string; /** Authentication Methods References */ amr?: string[]; /** Authorized Party - the party to which the ID Token was issued */ azp?: string; /** Session ID - String identifier for a Session */ sid?: string; /** Other custom claims */ [claimKey: string]: any; } interface ProfileStandardClaims { /** End-User's full name */ name?: string; /** Given name(s) or first name(s) of the End-User */ given_name?: string; /** Surname(s) or last name(s) of the End-User */ family_name?: string; /** Middle name(s) of the End-User */ middle_name?: string; /** Casual name of the End-User that may or may not be the same as the given_name. */ nickname?: string; /** Shorthand name that the End-User wishes to be referred to at the RP, such as janedoe or j.doe. */ preferred_username?: string; /** URL of the End-User's profile page */ profile?: string; /** URL of the End-User's profile picture */ picture?: string; /** URL of the End-User's Web page or blog */ website?: string; /** End-User's preferred e-mail address */ email?: string; /** True if the End-User's e-mail address has been verified; otherwise false. */ email_verified?: boolean; /** End-User's gender. Values defined by this specification are female and male. */ gender?: string; /** End-User's birthday, represented as an ISO 8601:2004 [ISO8601‑2004] YYYY-MM-DD format */ birthdate?: string; /** String from zoneinfo [zoneinfo] time zone database representing the End-User's time zone. */ zoneinfo?: string; /** End-User's locale, represented as a BCP47 [RFC5646] language tag. */ locale?: string; /** End-User's preferred telephone number. */ phone_number?: string; /** True if the End-User's phone number has been verified; otherwise false. */ phone_number_verified?: boolean; /** object End-User's preferred address in JSON [RFC4627] */ address?: OidcAddress; /** Time the End-User's information was last updated. */ updated_at?: number; } interface OidcAddress { /** Full mailing address, formatted for display or use on a mailing label */ formatted?: string; /** Full street address component, which MAY include house number, street name, Post Office Box, and multi-line extended street address information */ street_address?: string; /** City or locality component */ locality?: string; /** State, province, prefecture, or region component */ region?: string; /** Zip code or postal code component */ postal_code?: string; /** Country name component */ country?: string; } export class CordovaPopupWindow { constructor(params: any); navigate(params: any): Promise; promise: Promise; } export class CordovaPopupNavigator { prepare(params: any): Promise; } export class CordovaIFrameNavigator { prepare(params: any): Promise; } 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; 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); }