@rsksmart/express-did-auth
Version:
Authentication with Verifiable Credentials for Express.js
75 lines • 2.51 kB
TypeScript
import { JWTPayload, Signer } from 'did-jwt';
import { CredentialRequestInput } from 'daf-selective-disclosure';
import { RequestCounter } from './classes/request-counter';
import { SessionManager } from './classes/session-manager';
export interface AppState {
sessions: DidSessionStateMapping;
refreshTokens: RefreshTokenDidMapping;
}
interface DidSessionStateMapping {
[did: string]: UserState;
}
interface RefreshTokenDidMapping {
[refreshToken: string]: string;
}
export interface UserState {
requestCounter: RequestCounter;
sessionManager: SessionManager;
}
interface SelectiveDisclosureResponseEntry {
[key: string]: string;
}
export interface SelectiveDisclosureResponse {
claims: SelectiveDisclosureResponseEntry;
credentials: SelectiveDisclosureResponseEntry;
}
export interface ExpressDidAuthConfig extends SignupConfig {
requestSignupPath?: string;
signupPath?: string;
requestAuthPath?: string;
authPath?: string;
logoutPath?: string;
refreshTokenPath?: string;
challengeExpirationTimeInSeconds?: number;
challengeSecret: string;
accessTokenExpirationTimeInSeconds?: number;
loginMessageHeader?: string;
authenticationBusinessLogic?: AuthenticationBusinessLogic;
maxRequestsPerTimeSlot?: number;
timeSlotInSeconds?: number;
userSessionDurationInHours?: number;
noCsrfSecure?: boolean;
}
export interface DidResolverConfig {
rpcUrl?: string;
networkName?: string;
registry?: string;
}
export interface TokenValidationConfig extends DidResolverConfig {
serviceUrl: string;
useCookies?: boolean;
serviceDid: string;
}
export interface TokenConfig extends TokenValidationConfig {
serviceSigner: Signer;
}
export interface SignupConfig extends TokenConfig {
requiredCredentials?: string[];
requiredClaims?: CredentialRequestInput[];
signupBusinessLogic?: SignupBusinessLogic;
}
export interface ChallengeResponsePayload extends JWTPayload {
challenge: string;
}
export interface SignupChallengeResponsePayload {
did: string;
sd?: SelectiveDisclosureResponse;
}
export declare type AuthenticationBusinessLogic = (payload: ChallengeResponsePayload) => Promise<boolean>;
export declare type SignupBusinessLogic = (payload: SignupChallengeResponsePayload) => Promise<boolean>;
export interface AuthenticationConfig extends TokenConfig {
accessTokenExpirationTime?: number;
loginMessageHeader?: string;
}
export {};
//# sourceMappingURL=types.d.ts.map