import { AuthStrategy, AuthStrategyType } from '../../../../models/security/authentication'; import { AuthenticatedUser } from '../../../../models/security'; /** * OpenID Connect authentication strategy implementation. * * Handles OpenID Connect authentication flows including authorization code, * authorization code without PKCE, and implicit flows. Manages the complete * authentication lifecycle from initialization through login and logout. */ export declare class OpenidAuthStrategy implements AuthStrategy { private readonly logger; private readonly securityService; private readonly authenticationStorageService; private readonly authenticationService; private readonly securityContextService; private readonly openIdService; private readonly openidStorageService; private readonly tokenUtils; type: AuthStrategyType; private openIdSecurityConfig; /** * Creates a new OpenIdAuthStrategy and sets up configuration listeners. */ constructor(); /** * Initializes the OpenID authentication strategy. * @returns Promise resolving to true if user is logged in * @throws Error if configuration is missing or initialization fails */ initialize(): Promise; /** * Fetches the currently authenticated user. * * @returns A promise that resolves to the authenticated user. */ fetchAuthenticatedUser(): Promise; /** * Starts the OpenID Connect login flow. * @returns Promise that resolves when login flow is initiated * @throws Error if configuration is missing or flow type is unknown */ login(): Promise; /** * Logs out the current user and clears authentication data. * @returns Promise that resolves when logout is complete */ logout(): Promise; /** * Checks if the user is currently authenticated. * @returns True if user is authenticated, false otherwise */ isAuthenticated(): boolean; /** * Indicates that this strategy is not for external users. * @returns false, as this strategy is not for external authentication. */ isExternal(): boolean; /** * Sets up listener for security configuration changes. * @private */ private setupConfigurationListener; /** * Loads OpenID security configuration from security context. * @private */ private loadSecurityConfiguration; /** * Validates that OpenID configuration is available. * @private * @throws Error if configuration is not found */ private validateConfiguration; /** * Handles post-authentication setup for successful login. * @private */ private handleSuccessfulAuthentication; /** * Loads authenticated user and updates security context. * @private */ private loadAndSetAuthenticatedUser; /** * Handles authentication errors by logging and cleanup. * @private * @param error The error that occurred */ private handleAuthenticationError; /** * Gets the return URL for authentication redirect. * @private * @returns The return URL */ private getReturnUrl; /** * Executes the appropriate OpenID authentication flow. * @private * @param authFlow The authentication flow type * @param state Random state for CSRF protection * @param returnToUrl URL to redirect after authentication * @throws Error if flow type is unknown */ private executeAuthFlow; }