lbx-jwt
Version:
Provides JWT authentication for loopback applications. Includes storing roles inside tokens and handling refreshing. Built-in reuse detection.
61 lines (53 loc) • 1.66 kB
text/typescript
/* eslint-disable jsdoc/require-jsdoc */
import { model, property } from '@loopback/repository';
import { AuthenticationResponseJSON, AuthenticatorAttachment } from '@simplewebauthn/types';
import { AuthenticationExtensionsOutputs } from './authentication-extensions-outputs.model';
import { AuthenticatorAssertionResponse } from './authenticator-assertion-response.model';
import { Base64UrlString, authenticatorAttachmentValues, publicKeyCredentialTypeValues } from '../../../encapsulation/webauthn.utilities';
/**
* Response from the frontend when authentication was successful.
*/
@model()
export class AuthenticationResponse implements AuthenticationResponseJSON {
@property({
type: 'string',
required: true
})
id: Base64UrlString;
@property({
type: 'string',
required: true
})
rawId: Base64UrlString;
@property({
type: AuthenticatorAssertionResponse,
required: true
})
response: AuthenticatorAssertionResponse;
@property({
type: 'string',
required: false,
jsonSchema: {
enum: Object.values(authenticatorAttachmentValues)
}
})
authenticatorAttachment?: AuthenticatorAttachment;
@property({
type: AuthenticationExtensionsOutputs,
required: true
})
clientExtensionResults: AuthenticationExtensionsOutputs;
@property({
type: 'string',
required: true,
jsonSchema: {
enum: publicKeyCredentialTypeValues
}
})
type: PublicKeyCredentialType;
@property({
type: 'string',
required: true
})
userId: string;
}