@@ -86,6 +86,13 @@ function generateCodeVerifier() {
8686 . replace ( / = / g, '' ) . replace ( / \+ / g, '-' ) . replace ( / \/ / g, '_' ) ;
8787}
8888
89+ async function generateCodeChallenge ( verifier ) {
90+ const data = new TextEncoder ( ) . encode ( verifier ) ;
91+ const digest = await crypto . subtle . digest ( 'SHA-256' , data ) ;
92+ return btoa ( String . fromCharCode ( ...new Uint8Array ( digest ) ) )
93+ . replace ( / = / g, '' ) . replace ( / \+ / g, '-' ) . replace ( / \/ / g, '_' ) ;
94+ }
95+
8996
9097function TestIframe ( ) {
9198 const sdk = useDescope ( ) ;
@@ -112,6 +119,7 @@ function TestIframe() {
112119
113120 const checkSilentAuth = async ( ) => {
114121 const state = generateCodeVerifier ( ) ;
122+ const codeChallenge = await generateCodeChallenge ( state ) ;
115123 sessionStorage . setItem ( 'silent-auth-state' , state ) ;
116124
117125 const done = ( status , authenticated = false ) => {
@@ -180,6 +188,8 @@ function TestIframe() {
180188 `&redirect_uri=${ encodeURIComponent ( redirectUri ) } ` +
181189 `&oidc_error_redirect_uri=${ encodeURIComponent ( redirectUri ) } ` +
182190 `&state=${ state } ` +
191+ `&code_challenge=${ codeChallenge } ` +
192+ `&code_challenge_method=S256` +
183193 `&prompt=none` +
184194 `&scope=openid profile email` ;
185195
0 commit comments