The WebAuthn preregistration API provides a flow to initiate and set up WebAuthn preregistration authenticator enrollments through third-party fulfillment providers.
Note: For information about using WebAuthn preregistration with YubiKeys, see Require phishing-resistant authentication with pre-enrolled YubiKey.
Use the following sequence of endpoints to set up WebAuthn preregistration authenticator enrollments.
After you set up the preregistered WebAuthn factor, you can send the PIN to the user.
okta.users.manage
Activates a preregistered WebAuthn factor. As part of this operation, Okta first decrypts and verifies the factor PIN and enrollment data sent by the fulfillment provider.
Enrollment activation request
Success
PIN or cred requests generation failed
Forbidden
Not Found
Too Many Requests
{- "credResponses": [
- {
- "authenticatorEnrollmentId": "fwf5ajzJEWqknX6lk0g4",
- "credResponseJWE": "eyJlcGsiOnsia3R5IjoiRUM..."
}
], - "fulfillmentProvider": "yubico",
- "pinResponseJwe": "eyJl5IjoiRUMiLCJjcnYcGsiOnsia3...",
- "serial": "3632071",
- "userId": "00us2hPODQncCkxef0g3",
- "version": "5.4.3",
- "yubicoSigningJwks": [
- {
- "crv": "P-384",
- "kid": "APCS-Tsgnkey-C19881-H0027616953",
- "kty": "EC",
- "use": "sig",
- "x": "tJc-j5osUCP-75ihCOKsswTOj3XsekayG3x79K2ndyOIXu08gDMkvL8rks06tEAa",
- "y": "hfVGbQeG4l2orqenn-GATWwTm8tLqHFHuwfJp33CCNOMtYYsgkAEnW60ORzt4YV-"
}
]
}
{- "authenticatorEnrollmentIds": [
- "fwf5ajzJEWqknX6lk0g4"
], - "fulfillmentProvider": "yubico",
- "userId": "00us2hPODQncCkxef0g3"
}
okta.users.manage
Enrolls a preregistered WebAuthn factor. This WebAuthn factor has a longer challenge timeout period to accommodate the fulfillment request process. As part of this operation, Okta generates elliptic curve (EC) key-pairs used to encrypt the factor PIN and enrollment data sent by the fulfillment provider.
Enrollment initialization request
enrollmentRpIds | Array of strings List of relying party hostnames to register on the YubiKey | ||||||||||||
fulfillmentProvider | string Name of the fulfillment provider for the WebAuthn preregistration factor | ||||||||||||
userId | string ID of an existing Okta user | ||||||||||||
object (ECKeyJWK) Elliptic curve key in JSON Web Key (JWK) format. It's used during enrollment to encrypt fulfillment requests to Yubico, or during activation to verify Yubico's JWS (JSON Web Signature) objects in fulfillment responses. The currently agreed protocol uses P-384. | |||||||||||||
|
Success
PIN or cred requests generation failed
Forbidden
Not Found
Too Many Requests
{- "enrollmentRpIds": [
- "myorg.okta.com"
], - "fulfillmentProvider": "yubico",
- "userId": "00us2hPODQncCkxef0g3",
- "yubicoTransportKeyJWK": {
- "crv": "P-384",
- "kid": "APCS-Ttrans-C19881-I009",
- "kty": "EC",
- "use": "enc",
- "x": "r6AzcX3OSiJk1yQaBVYiBOtzFS9gNSpMDPvnVvl0CAX7el1ZyzmPG_BZ7u8sqTmF",
- "y": "RxPyGH1Xg74E2f5AQGkkddzsvTNY1R3R7mXTEM5wQtr1Y7C4XHlvITNZfU6G"
}
}
{- "credRequests": [
- {
- "authenticatorEnrollmentId": "fwf5ajzJEWqknX6lk0g4",
- "credRequestJwe": "eyJlcGsiOnsia3R5IjoiRUMiLCJ...",
- "keyId": "h2r91gconqiai1vs0psg"
}
], - "fulfillmentProvider": "yubico",
- "pinRequestJwe": "eyJlcGsa3R5IjoiRUMiLA...",
- "userId": "00us2hPODQncCkxef0g3"
}
okta.users.manage
Generates a fulfillment request by sending a WebAuthn preregistration event to start the flow. The WebAuthn preregistration integration for Okta Workflows uses a preregistration event to populate the fulfillment request.
No Content
Forbidden
Not Found
Too Many Requests
{- "userId": "00us2hPODQncCkxef0g3",
- "fulfillmentProvider": "yubico",
- "fulfillmentData": [
- {
- "productId": "55",
- "customizationId": "RXJN83",
- "inventoryProductId": "106"
}
]
}
{- "errorCode": "E0000006",
- "errorSummary": "You do not have permission to perform the requested action",
- "errorLink": "E0000006",
- "errorId": "sampleNUSD_8fdkFd8fs8SDBK",
- "errorCauses": [ ]
}
okta.users.manage
Sends the decoded PIN for the specified WebAuthn preregistration enrollment. PINs are sent to the user's email. To resend the PIN, call this operation again.
No Content
Forbidden
Not Found
Too Many Requests
{- "authenticatorEnrollmentId": "fwf5ajzJEWqknX6lk0g4",
- "fulfillmentProvider": "yubico",
- "userId": "00us2hPODQncCkxef0g3"
}
{- "errorCode": "E0000006",
- "errorSummary": "You do not have permission to perform the requested action",
- "errorLink": "E0000006",
- "errorId": "sampleNUSD_8fdkFd8fs8SDBK",
- "errorCauses": [ ]
}
okta.users.read
Lists all WebAuthn preregistration factors for the specified user
Success
Forbidden
Not Found
Too Many Requests
[- {
- "id": "fwf23789dfs9asdf782",
- "factorType": "webauthn",
- "provider": "FIDO",
- "vendorName": "FIDO",
- "fulfillmentProvider": "yubico",
- "status": "ACTIVE",
- "created": "2018-05-24T20:43:19.000Z",
- "lastUpdated": "2018-05-24T21:43:32.000Z",
- "profile": {
- "credentialId": "l3Br0n-7H3g047NqESqJynFtIgf3Ix9OfaRoNwLoloso99Xl2zS_O7EXUkmPeAIzTVtEL4dYjicJWBz7NpqhGA",
- "authenticatorName": "YubiKey 5C",
- "presetPinAvailable": true
}, - "_links": {
- "self": {
- "hints": {
- "allow": [
- "DELETE"
]
}
}
}
}
]
okta.users.manage
Deletes a specific WebAuthn preregistration factor for a user
No Content
Forbidden
Not Found
Too Many Requests
{- "errorCode": "E0000006",
- "errorSummary": "You do not have permission to perform the requested action",
- "errorLink": "E0000006",
- "errorId": "sampleNUSD_8fdkFd8fs8SDBK",
- "errorCauses": [ ]
}
okta.users.manage
Assigns the fulfillment error status to a WebAuthn preregistration factor for a user. The /mark-error
path indicates that the specific FULFILLMENT_ERRORED
AuthFactor status is set on the enrollment.
No Content
Forbidden
Not Found
Too Many Requests
{- "errorCode": "E0000006",
- "errorSummary": "You do not have permission to perform the requested action",
- "errorLink": "E0000006",
- "errorId": "sampleNUSD_8fdkFd8fs8SDBK",
- "errorCauses": [ ]
}