summaryrefslogtreecommitdiffhomepage
path: root/packages/server/src
diff options
context:
space:
mode:
authorAntoine Cormouls <contact.antoine.cormouls@gmail.com>2020-12-04 15:01:35 +0100
committerAntoine Cormouls <contact.antoine.cormouls@gmail.com>2020-12-04 15:01:35 +0100
commit5f508216dc3ee38a7f17c038b367e8575ab14929 (patch)
treebf95db1232a6aa8dba52eea31ec6840d3eaca977 /packages/server/src
parent4f1a0ab1225a34788d3c1f9bf4a9c0b7cc31b17b (diff)
Optional Allow Credential
Diffstat (limited to 'packages/server/src')
-rw-r--r--packages/server/src/assertion/generateAssertionOptions.test.ts19
-rw-r--r--packages/server/src/assertion/generateAssertionOptions.ts7
2 files changed, 23 insertions, 3 deletions
diff --git a/packages/server/src/assertion/generateAssertionOptions.test.ts b/packages/server/src/assertion/generateAssertionOptions.test.ts
index 70a72db..24253bf 100644
--- a/packages/server/src/assertion/generateAssertionOptions.test.ts
+++ b/packages/server/src/assertion/generateAssertionOptions.test.ts
@@ -65,6 +65,25 @@ test('should not set userVerification if not specified', () => {
expect(options.userVerification).toEqual(undefined);
});
+test('should not set allowCredentials if not specified', () => {
+ const options = generateAssertionOptions({ rpID: 'test' });
+
+ expect(options.allowCredentials).toEqual(undefined);
+});
+
+test('should generate without params', () => {
+ const options = generateAssertionOptions();
+ const { challenge, ...otherFields } = options;
+ expect(otherFields).toEqual({
+ allowCredentials: undefined,
+ extensions: undefined,
+ rpId: undefined,
+ timeout: 60000,
+ userVerification: undefined,
+ });
+ expect(typeof challenge).toEqual('string');
+});
+
test('should set userVerification if specified', () => {
const options = generateAssertionOptions({
challenge: 'totallyrandomvalue',
diff --git a/packages/server/src/assertion/generateAssertionOptions.ts b/packages/server/src/assertion/generateAssertionOptions.ts
index d05dc00..79ff6f8 100644
--- a/packages/server/src/assertion/generateAssertionOptions.ts
+++ b/packages/server/src/assertion/generateAssertionOptions.ts
@@ -9,7 +9,7 @@ import base64url from 'base64url';
import generateChallenge from '../helpers/generateChallenge';
type Options = {
- allowCredentials: PublicKeyCredentialDescriptorJSON[];
+ allowCredentials?: PublicKeyCredentialDescriptorJSON[];
challenge?: string | Buffer;
timeout?: number;
userVerification?: UserVerificationRequirement;
@@ -20,7 +20,8 @@ type Options = {
/**
* Prepare a value to pass into navigator.credentials.get(...) for authenticator "login"
*
- * @param allowCredentials Authenticators previously registered by the user
+ * @param allowCredentials Authenticators previously registered by the user, if not provided
+ * device can ask user which credential he wants to use
* @param challenge Random value the authenticator needs to sign and pass back
* user for assertion
* @param timeout How long (in ms) the user can take to complete assertion
@@ -30,7 +31,7 @@ type Options = {
* @param rpID Valid domain name (after `https://`)
*/
export default function generateAssertionOptions(
- options: Options,
+ options: Options = {},
): PublicKeyCredentialRequestOptionsJSON {
const {
allowCredentials,