lbx-jwt
Version:
Provides JWT authentication for loopback applications. Includes storing roles inside tokens and handling refreshing. Built-in reuse detection.
77 lines (67 loc) • 2.39 kB
text/typescript
//TODO: Remove
/* eslint-disable jsdoc/require-jsdoc */
import { model, property } from '@loopback/repository';
import { getJsonSchema } from '@loopback/rest';
import { PublicKeyCredentialCreationOptionsJSON } from '@simplewebauthn/types';
import { AuthenticationExtensionsInputs } from './authentication-extensions-inputs.model';
import { AuthenticatorSelectionCriteria } from './authenticator-selection-criteria.model';
import { PublicKeyCredentialDescriptor } from './public-key-credential-descriptor.model';
import { PublicKeyCredentialParameters } from './public-key-credential-parameters.model';
import { PublicKeyCredentialRpEntity } from './public-key-credential-rp-entity.model';
import { PublicKeyCredentialUser } from './public-key-credential-user.model';
import { Base64UrlString, attestationConveyancePreferenceValues } from '../../../encapsulation/webauthn.utilities';
@model()
export class BiometricRegistrationOptions implements PublicKeyCredentialCreationOptionsJSON {
@property({
type: PublicKeyCredentialRpEntity,
required: true
})
rp: PublicKeyCredentialRpEntity;
@property({
type: PublicKeyCredentialUser,
required: true
})
user: PublicKeyCredentialUser;
@property({
type: 'string',
required: true
})
challenge: Base64UrlString;
@property({
type: 'array',
itemType: 'object',
required: false,
jsonSchema: getJsonSchema(PublicKeyCredentialParameters)
})
pubKeyCredParams: PublicKeyCredentialParameters[];
@property({
type: 'number',
required: false
})
timeout?: number;
@property({
type: 'array',
itemType: 'object',
required: false,
jsonSchema: getJsonSchema(PublicKeyCredentialDescriptor)
})
excludeCredentials?: PublicKeyCredentialDescriptor[];
@property({
type: AuthenticatorSelectionCriteria,
required: false
})
authenticatorSelection?: AuthenticatorSelectionCriteria;
@property({
type: 'string',
required: false,
jsonSchema: {
enum: attestationConveyancePreferenceValues
}
})
attestation?: AttestationConveyancePreference;
@property({
type: AuthenticationExtensionsInputs,
required: false
})
extensions?: AuthenticationExtensionsInputs;
}