Detailed Implementation
PKCE Implementation
PKCE (Proof Key for Code Exchange) is mandatory. Generate a code verifier and challenge:
// Generate code verifier (43-128 characters) const codeVerifier = base64URLEncode(crypto.randomBytes(32)); // Generate code challenge const codeChallenge = base64URLEncode( crypto.createHash('sha256').update(codeVerifier).digest() );
Scope and Claims
Standard OIDC Scopes
openid- Required for OIDC. Returnssubclaimprofile- Returns profile information including:name,given_name,family_name,middle_name,nickname,preferred_usernameprofile,picture,website,gender,birthdate,zoneinfo,locale,updated_atemail- Returnsemailandemail_verifiedclaimsphone- Returnsphone_numberandphone_number_verifiedclaims
TrueVault Specific Claims (via claims parameter)
Use the claims parameter to request specific TrueVault identity data:
Identity Claims (examples):
trueidentity.credential- Identity verification credentialtrueidentity.given_name- Verified given nametrueidentity.family_name- Verified family nametrueidentity.birth_date- Verified birth datetrueidentity.email- Verified email addresstrueidentity.phone- Verified phone numbertrueidentity.email_verified- Email verification statustrueidentity.phone_verified- Phone verification statustrueidentity.names_verified- Name verification statusSee Userinfo for full details.
Document Claims (examples):
document.passport.travel_document_number- Australian passport or travel document numberdocument.passport_foreign.passport_number- Foreign passport numberdocument.driving_license.licence_number- Driver's license numberSee Userinfo for full details.
Credential Claims (examples):
trueidentity.credential- Identity verification credentialtrueidentity.credential_valid- Identity verification credential validvevortw.credential- VEVO Right to Work credentialSee Userinfo for full details.
Example Scope Combinations
Basic Profile Access:
scope=openid profile email
Identity & Document Verification:
claims={"true": ["trueidentity.credential", "trueidentity.given_name", "trueidentity.family_name", "trueidentity.birth_date", "trueidentity.email", "trueidentity.phone", "trueidentity.email_verified", "trueidentity.phone_verified", "trueidentity.names_verified", "document.passport.travel_document_number", "document.passport_foreign.travel_document_number", "document.driving_license.licence_number"]}