This document describes the Quado API, which is meant to be used by Relying Party or trusted parties performing administrative tasks.
Quado has acquired FIDO universal server certification, which supports the full range of FIDO authentications (FIDO2, UAF and U2F). You can select any type of FIDO specification your service is required.
"error_message": "error detail"
key in the JSON response.GET
method implies that you want to fetch something from Quado, and POST
implies you want to save something new to Quado.2XX
indicates all went well, while 4XX
or 5XX
response codes indicate an error from the requesting client or our API servers respectively.x-transaction-id
header. You can search API logs by this id from Quado management console.An API Key is required to be sent as part of every request to the Quado API, in the form of an X-Api-Key
request header.
If you do not have an API key, you can easily generate one from Quado management console.
An API Key tells our API server that the request it received came from you. Everything that you have access to in Quado FIDO server is accessible with an API Key that is generated by you.
You can find FIDO2 sample code from url below for understanding how to integrate Quado API in your service. UAF and U2F sample code are comming soon.
https://doc.quado.io/quick_start.
https://github.com/quado-developer/quado-webauthn-express-sample.
For help regarding accessing the Quado API, feel free to ask us at contact@quado.io.
In the event you receive a 503
response from our servers, it implies that we have hit an unexpected spike in API access traffic and would usually be operational within the next 5 minutes. If the outage persists, or your receive any other form of 5XX
error, kindly let us know.
Your application can call navigator.credentials.create()
with the fido_request
field of the response this API.
uid required | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ The user handle of the user account entity. |
params required | object FIDO related parameters. |
Public key credential creation options was created.
fido_request |
{- "uid": "01234567-89ab-cdef-0123-456789abcdef",
- "params": {
- "user": {
- "name": "taro@example.com",
- "displayName": "Taro Yamada"
}, - "authenticatorSelection": {
- "authenticatorAttachment": "platform",
- "userVerification": "required",
- "requireResidentKey": false
}, - "timeout": 10000,
- "attestation": "none"
}
}
{- "fido_request": {
- "user": {
- "id": "ZmQ3NGQ2OGYtMWZjMS00M2JmLTlmZWItNjYzMDM2MzY0YTc5",
- "name": "taro@example.com",
- "displayName": "Taro Yamada"
}, - "challenge": "jeEqnJHJtkE09My8HfdFhBRL_QYB6emUfSuCvJmh3aA",
- "pubKeyCredParams": [
- {
- "type": "public-key",
- "alg": -7
}
], - "excludeCredentials": [
- {
- "type": "public-key",
- "id": "nz7n_XrFckSdjb78LriK9jf7YbZICGVXyQX8yyaX44v94roOcc01HK3B0tzW0uTl",
- "transports": [
- "usb"
]
}
], - "authenticatorSelection": {
- "authenticatorAttachment": "platform",
- "userVerification": "required",
- "requireResidentKey": false
}, - "timeout": 10000,
- "attestation": "none",
- "extensions": null
}
}
In order to complete registration of a new credential, your application need to send AuthenticatorAttestationResponse generated by calling navigator.credentials.create()
.
fido_response required |
Registration succeeded.
uid | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ The user handle of the user account entity. |
key_info | object (FIDO2_KeyInfo) Registered key information |
{- "fido_response": {
- "id": "nz7n_XrFckSdjb78LriK9jf7YbZICGVXyQX8yyaX44v94roOcc01HK3B0tzW0uTl",
- "rawId": "nz7n_XrFckSdjb78LriK9jf7YbZICGVXyQX8yyaX44v94roOcc01HK3B0tzW0uTl",
- "type": "public-key",
- "response": {
- "clientDataJSON": "eyJjaGFsbGVuZ2UiOiJRMW92NFdITC1JbFlhLURaczRWdkkxOGczVHRUV2RFQk9Xd0RLOFVaSUpjIiwib3JpZ2luIjoiaHR0cHM6Ly9kZW1vLnF1YWRvLmlvIiwidHlwZSI6IndlYmF1dGhuLmNyZWF0ZSJ9",
- "attestationObject": "o2NmbXRkbm9uZWdhdHRTdG10oGhhdXRoRGF0YVjEE4Mf1Uogz5Gwtvu4tANTrL1cSUjdn5CvDL8Kk18IGJNBAAAAAAAAAAAAAAAAAAAAAAAAAAAAQILe30T0EUEzhGS2SfOZqi54QaCvxGR_tHdnTakAt8JBVfllU9am3ixxPwUmTA2X_1kfHylKmsNI688bjdrsvHelAQIDJiABIVggeBTJs7i_q46eeLNBidDkxjN7ZQXgg2EJbjws4zAiADMiWCDyJ7EtQOfYVc6YMNzuDPKlWEzmXlaEdnSM_pJJzGotLA"
}, - "getClientExtensionResults": { }
}
}
{- "uid": "01234567-89ab-cdef-0123-456789abcdef",
- "key_info": {
- "id": "01234567-89ab-cdef-0123-456789abcdef",
- "counter": 10,
- "aaguid": "01234567-89ab-cdef-0123-456789abcdef",
- "credential_id": "nz7n_XrFckSdjb78LriK9jf7YbZICGVXyQX8yyaX44v94roOcc01HK3B0tzW0uTl",
- "attestation_type": "none",
- "attestation_format": "None",
- "created_at": "2020-01-08T20:11:17.703Z",
- "updated_at": "2020-01-08T20:11:17.703Z"
}
}
Your application can call navigator.credentials.get()
with the fido_request
field of the response this API.
uid required | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ The user handle of the user account entity. |
params required | object FIDO related parameters. |
Public key credential request options was created.
fido_request |
{- "uid": "01234567-89ab-cdef-0123-456789abcdef",
- "params": {
- "userVerification": "required",
- "timeout": 10000,
- "extensions": null
}
}
{- "fido_request": {
- "challenge": "jeEqnJHJtkE09My8HfdFhBRL_QYB6emUfSuCvJmh3aA",
- "timeout": 10000,
- "rpId": "sample.quado.io",
- "allowCredentials": [
- {
- "type": "public-key",
- "id": "nz7n_XrFckSdjb78LriK9jf7YbZICGVXyQX8yyaX44v94roOcc01HK3B0tzW0uTl",
- "transports": [
- "usb"
]
}
], - "userVerification": "required",
- "extensions": null
}
}
In order to complete authentication, your application need to send AuthenticatorAssertionResponse generated by calling navigator.credentials.get()
.
fido_response required |
Authentication succeeded.
uid | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ The user handle of the user account entity. |
key_info | object (FIDO2_KeyInfo) Registered key information |
{- "fido_response": {
- "id": "nz7n_XrFckSdjb78LriK9jf7YbZICGVXyQX8yyaX44v94roOcc01HK3B0tzW0uTl",
- "rawId": "nz7n_XrFckSdjb78LriK9jf7YbZICGVXyQX8yyaX44v94roOcc01HK3B0tzW0uTl",
- "type": "public-key",
- "response": {
- "clientDataJSON": "eyJjaGFsbGVuZ2UiOiJRMW92NFdITC1JbFlhLURaczRWdkkxOGczVHRUV2RFQk9Xd0RLOFVaSUpjIiwib3JpZ2luIjoiaHR0cHM6Ly9kZW1vLnF1YWRvLmlvIiwidHlwZSI6IndlYmF1dGhuLmNyZWF0ZSJ9",
- "authenticatorData": "E4Mf1Uogz5Gwtvu4tANTrL1cSUjdn5CvDL8Kk18IGJMFAAALIw",
- "signature": "MEUCIQDDR13lUTSVhFdk_ueQBgBgYSOjc8vwVEiiTkyuFx",
- "userHandle": null
}, - "getClientExtensionResults": { }
}
}
{- "uid": "01234567-89ab-cdef-0123-456789abcdef",
- "key_info": {
- "id": "01234567-89ab-cdef-0123-456789abcdef",
- "counter": 10,
- "aaguid": "01234567-89ab-cdef-0123-456789abcdef",
- "credential_id": "nz7n_XrFckSdjb78LriK9jf7YbZICGVXyQX8yyaX44v94roOcc01HK3B0tzW0uTl",
- "attestation_type": "none",
- "attestation_format": "None",
- "created_at": "2020-01-08T20:11:17.703Z",
- "updated_at": "2020-01-08T20:11:17.703Z"
}
}
service required | string (Service) Enum: "webauthn" "uaf" "u2f" Example: webauthn This parameter specify a service which you would manage:
|
page | integer >= 0 Default: 0 The collection items offset. |
size | integer [ 20 .. 100 ] Default: 20 The collection items limit. |
User list.
uid | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ The user handle of the user account entity. |
created_at | string The time user is registered. |
updated_at | string The time user is updated. |
[- {
- "uid": "01234567-89ab-cdef-0123-456789abcdef",
- "created_at": "2020-01-08T20:11:17.703Z",
- "updated_at": "2020-01-08T20:11:17.703Z"
}
]
service required | string (Service) Enum: "webauthn" "uaf" "u2f" Example: webauthn This parameter specify a service which you would manage:
|
uid required | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ Example: 01234567-89ab-cdef-0123-456789abcdef The user handle of the user account entity. |
User information.
uid | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ The user handle of the user account entity. |
created_at | string The time user is registered. |
updated_at | string The time user is updated. |
{- "uid": "01234567-89ab-cdef-0123-456789abcdef",
- "created_at": "2020-01-08T20:11:17.703Z",
- "updated_at": "2020-01-08T20:11:17.703Z"
}
service required | string (Service) Enum: "webauthn" "uaf" "u2f" Example: webauthn This parameter specify a service which you would manage:
|
uid required | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ Example: 01234567-89ab-cdef-0123-456789abcdef The user handle of the user account entity. |
Successful operation
service required | string (Service) Enum: "webauthn" "uaf" "u2f" Example: webauthn This parameter specify a service which you would manage:
|
uid required | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ Example: 01234567-89ab-cdef-0123-456789abcdef The user handle of the user account entity. |
page | integer >= 0 Default: 0 The collection items offset. |
size | integer [ 20 .. 100 ] Default: 20 The collection items limit. |
User's key list
user_id | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ The user handle of the user account entity. |
id | string (KeyId) The key handle of the registered key entity. |
counter | integer (signatureCounter) The counter is incremented for each successful authenticatorGetAssertion operation. |
aaguid | string (aaguid) The AAGUID of the authenticator. |
credential_id | string (CredentialId) The credential's identifier. |
attestation_type | string (AttestationConveyancePreference) Enum: "none" "indirect" "direct" Relying Parties may use AttestationConveyancePreference to specify their preference regarding attestation conveyance during credential generation.
|
attestation_format | string (attestationFormat) Enum: "None" "Self" "Basic" "ECDAA" "AttCA" Attestation statement format. |
created_at | string The time key is registered. |
updated_at | string The time key is updated. |
[- {
- "user_id": "01234567-89ab-cdef-0123-456789abcdef",
- "id": "01234567-89ab-cdef-0123-456789abcdef",
- "counter": 10,
- "aaguid": "01234567-89ab-cdef-0123-456789abcdef",
- "credential_id": "nz7n_XrFckSdjb78LriK9jf7YbZICGVXyQX8yyaX44v94roOcc01HK3B0tzW0uTl",
- "attestation_type": "none",
- "attestation_format": "None",
- "created_at": "2020-01-08T20:11:17.703Z",
- "updated_at": "2020-01-08T20:11:17.703Z"
}
]
service required | string (Service) Enum: "webauthn" "uaf" "u2f" Example: webauthn This parameter specify a service which you would manage:
|
uid required | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ Example: 01234567-89ab-cdef-0123-456789abcdef The user handle of the user account entity. |
id required | string (KeyId) Example: 01234567-89ab-cdef-0123-456789abcdef The key handle of the registered key entity. |
User's key information
user_id | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ The user handle of the user account entity. |
id | string (KeyId) The key handle of the registered key entity. |
counter | integer (signatureCounter) The counter is incremented for each successful authenticatorGetAssertion operation. |
aaguid | string (aaguid) The AAGUID of the authenticator. |
credential_id | string (CredentialId) The credential's identifier. |
attestation_type | string (AttestationConveyancePreference) Enum: "none" "indirect" "direct" Relying Parties may use AttestationConveyancePreference to specify their preference regarding attestation conveyance during credential generation.
|
attestation_format | string (attestationFormat) Enum: "None" "Self" "Basic" "ECDAA" "AttCA" Attestation statement format. |
created_at | string The time key is registered. |
updated_at | string The time key is updated. |
{- "user_id": "01234567-89ab-cdef-0123-456789abcdef",
- "id": "01234567-89ab-cdef-0123-456789abcdef",
- "counter": 10,
- "aaguid": "01234567-89ab-cdef-0123-456789abcdef",
- "credential_id": "nz7n_XrFckSdjb78LriK9jf7YbZICGVXyQX8yyaX44v94roOcc01HK3B0tzW0uTl",
- "attestation_type": "none",
- "attestation_format": "None",
- "created_at": "2020-01-08T20:11:17.703Z",
- "updated_at": "2020-01-08T20:11:17.703Z"
}
service required | string (Service) Enum: "webauthn" "uaf" "u2f" Example: webauthn This parameter specify a service which you would manage:
|
uid required | string (Uid) [ 8 .. 256 ] characters /^[a-zA-Z0-9_-]+$/ Example: 01234567-89ab-cdef-0123-456789abcdef The user handle of the user account entity. |
id required | string (KeyId) Example: 01234567-89ab-cdef-0123-456789abcdef The key handle of the registered key entity. |
Successful operation