summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/server/src/assertion/generateAssertionOptions.test.ts15
-rw-r--r--packages/server/src/assertion/generateAssertionOptions.ts4
2 files changed, 16 insertions, 3 deletions
diff --git a/packages/server/src/assertion/generateAssertionOptions.test.ts b/packages/server/src/assertion/generateAssertionOptions.test.ts
index fe4feb7..bd2d48d 100644
--- a/packages/server/src/assertion/generateAssertionOptions.test.ts
+++ b/packages/server/src/assertion/generateAssertionOptions.test.ts
@@ -34,9 +34,7 @@ test('defaults to 60 seconds if no timeout is specified', () => {
});
test('should not set userVerification if not specified', () => {
- const options = generateAssertionOptions({
- ...goodOpts1,
- });
+ const options = generateAssertionOptions(goodOpts1);
expect(options.userVerification).toEqual(undefined);
});
@@ -50,6 +48,17 @@ test('should set userVerification if specified', () => {
expect(options.userVerification).toEqual('required');
});
+test('should set extensions if specified', () => {
+ const options = generateAssertionOptions({
+ ...goodOpts1,
+ extensions: { appid: 'simplewebauthn' },
+ });
+
+ expect(options.extensions).toEqual({
+ appid: 'simplewebauthn',
+ });
+});
+
const goodOpts1 = {
challenge: 'totallyrandomvalue',
allowedBase64CredentialIDs: [
diff --git a/packages/server/src/assertion/generateAssertionOptions.ts b/packages/server/src/assertion/generateAssertionOptions.ts
index 1e6a4e6..9444a54 100644
--- a/packages/server/src/assertion/generateAssertionOptions.ts
+++ b/packages/server/src/assertion/generateAssertionOptions.ts
@@ -8,6 +8,7 @@ type Options = {
suggestedTransports?: AuthenticatorTransport[],
timeout?: number,
userVerification?: UserVerificationRequirement,
+ extensions?: AuthenticationExtensionsClientInputs,
};
/**
@@ -20,6 +21,7 @@ type Options = {
* @param suggestedTransports Suggested types of authenticators for assertion
* @param userVerification Set to `'discouraged'` when asserting as part of a 2FA flow, otherwise
* set to `'preferred'` or `'required'` as desired.
+ * @param extensions Additional plugins the authenticator or browser should use during assertion
*/
export default function generateAssertionOptions(
options: Options,
@@ -30,6 +32,7 @@ export default function generateAssertionOptions(
suggestedTransports = ['usb', 'ble', 'nfc', 'internal'],
timeout = 60000,
userVerification,
+ extensions,
} = options;
return {
@@ -41,5 +44,6 @@ export default function generateAssertionOptions(
})),
timeout,
userVerification,
+ extensions,
};
}