PKCE Authorization Flow (RFC 7636)
Demonstrates a pure client-side Single Page Application with zero server secrets. The browser cryptographically generates and verifies its identity.
Cryptographic Parameters (Web Crypto API)
The browser dynamically derives a SHA-256 code challenge from a high-entropy random verifier.
32 cryptographically random bytes generated via window.crypto.getRandomValues. Stored in sessionStorage for <30 seconds.
One-way cryptographic hash: Base64URL(SHA-256(verifier)). Transmitted in URL parameters during initial authorization.
Public Client Security Analysis
RFC 7636 Threat MitigationThere is no CLIENT_SECRET anywhere in the bundle. Decompiling the JavaScript or viewing network requests yields zero privileged server keys.
Even if a malicious actor steals the code from browser history or URL logs, they cannot exchange it without the original browser's code_verifier.
The moment the legitimate browser exchanges the code, Viselta burns the authorization code. Subsequent attempts trigger a security alert.