Skip to content

Verify a DID authentication proof and create a session.

POST
/api/auth/dids/verify
Code sample: Shell / cURL
curl --request POST \
--url https://auth.example.com/api/auth/dids/verify \
--header 'Content-Type: application/json' \
--data '{ "challenge_id": "challenge_123", "proof": "eyJhbGciOiJFZERTQSJ9..." }'

Works only where the tenant allows DID login (authentication-methods.did.login_enabled, default false); otherwise 403 (503 when the settings cannot be read), decided before the challenge is consumed, the DID is resolved, an account is looked up or a session is opened. A DID that is not linked, or whose link has no lookup route, answers like an unlinked DID (link required), not with a server error. Linking a DID (/api/auth/dids/register/*) is governed by the same setting; listing and unlinking (/api/auth/dids) are not, so a user can always remove a DID.

Media type application/json
object
challenge_id
required
string
proof
required
string
Example
{
"challenge_id": "challenge_123",
"proof": "eyJhbGciOiJFZERTQSJ9..."
}

Successful JSON response.

Media type application/json
object
session_id
required
string
user_id
required
string
expires_in
required
integer
Example
{
"session_id": "sess_123",
"user_id": "user_123",
"expires_in": 86400
}

Error response.

Media type application/json
object
error
string
error_description
string
message
string
webauthn_signal

Optional browser-side WebAuthn Signal API hint. When unknown_credential is true, clients that just received a WebAuthn credential assertion may call PublicKeyCredential.signalUnknownCredential() for that credential ID.

object
unknown_credential
boolean
key
additional properties
Example generated
{
"error": "example",
"error_description": "example",
"message": "example",
"webauthn_signal": {
"unknown_credential": true
}
}

Error response.

Media type application/json
object
error
string
error_description
string
message
string
webauthn_signal

Optional browser-side WebAuthn Signal API hint. When unknown_credential is true, clients that just received a WebAuthn credential assertion may call PublicKeyCredential.signalUnknownCredential() for that credential ID.

object
unknown_credential
boolean
key
additional properties
Example generated
{
"error": "example",
"error_description": "example",
"message": "example",
"webauthn_signal": {
"unknown_credential": true
}
}

Error response.

Media type application/json
object
error
string
error_description
string
message
string
webauthn_signal

Optional browser-side WebAuthn Signal API hint. When unknown_credential is true, clients that just received a WebAuthn credential assertion may call PublicKeyCredential.signalUnknownCredential() for that credential ID.

object
unknown_credential
boolean
key
additional properties
Example generated
{
"error": "example",
"error_description": "example",
"message": "example",
"webauthn_signal": {
"unknown_credential": true
}
}