Skip to main content

Interface: IAuthenticationService

Defined in: src/types/interfaces/auth.interface.ts:339

Authentication service interface.

Remarks​

Provides DID-based authentication for AT Protocol users. Issues short-lived JWTs for session management.

Example​

const authService = container.resolve<IAuthenticationService>('IAuthenticationService');

const result = await authService.authenticateWithDID(
'did:plc:abc123' as DID,
{ type: 'app_password', value: 'my-app-password' }
);

if (result.success) {
console.log('Access token:', result.sessionToken?.accessToken);
} else if (result.mfaRequired) {
console.log('MFA required:', result.mfaChallenge?.methods);
}

Methods​

authenticateWithDID()​

authenticateWithDID(did, credential): Promise<AuthenticationResult>

Defined in: src/types/interfaces/auth.interface.ts:358

Authenticate user via DID and PDS credential verification.

Parameters​

did​

DID

User's decentralized identifier

credential​

AuthCredential

Authentication credential

Returns​

Promise<AuthenticationResult>

Authentication result with session token or MFA challenge

Remarks​

Verifies the credential with the user's PDS and issues a Chive session token upon successful authentication.

Rate limit: 5 attempts per 15 minutes per IP address.

Throws​

AuthenticationError if credential verification fails

Throws​

RateLimitError if rate limit exceeded


completeMFAChallenge()​

completeMFAChallenge(challengeId, method, value): Promise<AuthenticationResult>

Defined in: src/types/interfaces/auth.interface.ts:440

Complete MFA challenge.

Parameters​

challengeId​

string

Challenge ID from MFAChallenge

method​

MFA method type used

"webauthn" | "totp" | "backup_code"

value​

string

MFA code or credential

Returns​

Promise<AuthenticationResult>

Authentication result with session token

Remarks​

Verifies the MFA code/credential and completes authentication if successful.

Throws​

AuthenticationError if MFA verification fails


issueSessionToken()​

issueSessionToken(did, options?): Promise<SessionToken>

Defined in: src/types/interfaces/auth.interface.ts:374

Issue JWT session token for authenticated user.

Parameters​

did​

DID

Authenticated user's DID

options?​

TokenOptions

Token options

Returns​

Promise<SessionToken>

Session token with access and optional refresh token

Remarks​

Generates a new JWT access token and optional refresh token. The access token is signed with ES256 and includes the user's DID and granted scopes.


refreshToken()​

refreshToken(refreshToken): Promise<SessionToken>

Defined in: src/types/interfaces/auth.interface.ts:390

Refresh access token using valid refresh token.

Parameters​

refreshToken​

string

Single-use refresh token

Returns​

Promise<SessionToken>

New session token with rotated refresh token

Remarks​

Validates the refresh token and issues a new access token. The refresh token is rotated (single-use) for security.

Throws​

AuthenticationError if refresh token is invalid or reused


revokeToken()​

revokeToken(token): Promise<void>

Defined in: src/types/interfaces/auth.interface.ts:405

Revoke token and invalidate session.

Parameters​

token​

string

Access or refresh token to revoke

Returns​

Promise<void>

Remarks​

Adds the token to a blacklist in Redis. The token will be rejected for all subsequent requests until it naturally expires.

This method is idempotent.


verifyToken()​

verifyToken(token): Promise<TokenClaims>

Defined in: src/types/interfaces/auth.interface.ts:422

Verify JWT and extract claims.

Parameters​

token​

string

JWT access token

Returns​

Promise<TokenClaims>

Token claims if valid

Remarks​

Validates the JWT signature, expiration, issuer, and audience. Checks if the token has been revoked.

Throws​

TokenExpiredError if token has expired

Throws​

TokenValidationError if signature is invalid or token is revoked