UNPKG

@rsksmart/express-did-auth

Version:

Authentication with Verifiable Credentials for Express.js

75 lines 2.51 kB
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