moleculer-iam
Version:
Centralized IAM module for moleculer. Including a certified OIDC provider and an Identity provider for user profile, credentials, and custom claims management. Custom claims could be defined/updated by declarative schema which contains claims validation a
52 lines (51 loc) • 2.81 kB
TypeScript
import { Strategy } from "passport";
import { ProviderConfigBuilder } from "./config";
import { ApplicationRequestContext } from "./app.types";
import { Logger } from "../../lib/logger";
import { Identity, IdentityProvider } from "../../idp";
export interface IdentityFederationProviderConfigurationMap {
[provider: string]: IdentityFederationProviderConfiguration<any, any>;
}
declare type ForbiddenCustomOptions = "clientID" | "clientSecret" | "secret" | "scope" | "callback" | "strategy" | "scopes" | "clientId" | "client" | "callbackURL" | "callbackUrl";
export declare type IdentityFederationProviderConfiguration<CustomProfile extends {}, CustomOptions extends {}> = {
clientID: string;
clientSecret: string;
scope: string;
callback: IdentityFederationCallbackHandler<CustomProfile>;
strategy: IdentityFederationStrategyFactory<CustomProfile, CustomOptions>;
} & Partial<Omit<CustomOptions, ForbiddenCustomOptions>>;
export declare type IdentityFederationStrategyFactory<CustomProfile extends {}, CustomOptions extends {}> = (options: Omit<CustomOptions, ForbiddenCustomOptions> & {
clientID: string;
clientSecret: string;
scope: string;
callbackURL: string;
}, verify: IdentityFederationCallbackVerifyFunction<CustomProfile>) => Strategy;
export interface IdentityFederationCallbackArgs<CustomProfile extends {}> {
accessToken: string;
refreshToken?: string;
profile: CustomProfile;
scope: string[];
idp: IdentityProvider;
logger: Logger;
}
export declare type IdentityFederationCallbackHandler<CustomProfile extends {}> = (args: IdentityFederationCallbackArgs<CustomProfile>) => Promise<Identity>;
export declare type IdentityFederationCallbackVerifyFunction<CustomProfile extends {}> = (accessToken: string, refreshToken: string | undefined, profile: CustomProfile, done: (error: Error | null, callbackArgs?: IdentityFederationCallbackArgs<CustomProfile>, info?: any) => void) => void;
export declare class IdentityFederationBuilder {
protected readonly builder: ProviderConfigBuilder;
private readonly passport;
private readonly scopes;
private readonly callbacks;
private config;
constructor(builder: ProviderConfigBuilder);
private _prefix;
get prefix(): string;
setCallbackPrefix(prefix: string): this;
readonly getCallbackURL: (providerName: string) => string;
get providerNames(): string[];
setProviderConfigurationMap(configMap: IdentityFederationProviderConfigurationMap): this;
_dangerouslyBuild(): void;
private assertProvider;
handleRequest(ctx: ApplicationRequestContext, next: () => Promise<void>, provider: string): Promise<void>;
handleCallback(ctx: ApplicationRequestContext, next: () => Promise<void>, provider: string): Promise<Identity>;
}
export {};