diff --git a/src/app/entrar/components/LoginForm.js b/src/app/entrar/components/LoginForm.js
index 6056ffefd6747132e147dc86c7f2d6cd22d8362a..9f204b9d58e65565722f20935adf1791103de4de 100644
--- a/src/app/entrar/components/LoginForm.js
+++ b/src/app/entrar/components/LoginForm.js
@@ -30,10 +30,12 @@ export default function LoginForm({
     async function generateCodeVerifier() {
       var code_verifier = new Uint8Array(32);
       window.crypto.getRandomValues(code_verifier);
-      return code_verifier;
+      return base64URL(code_verifier);
     }
-    function generateCodeChallenge(code_verifier) {
-      return base64URL(window.crypto.subtle.digest("SHA-256", code_verifier));
+    async function generateCodeChallenge(code_verifier) {
+      const encoder = new TextEncoder();
+      const data = encoder.encode(code_verifier);
+      return base64URL(await window.crypto.subtle.digest("SHA-256", data));
     }
     async function base64URL(buffer) {
       // use a FileReader to generate a base64 data URI:
@@ -43,10 +45,10 @@ export default function LoginForm({
         reader.readAsDataURL(new Blob([buffer]))
       });
       // remove the `data:...;base64,` part from the start
-      return base64url.slice(base64url.indexOf(',') + 1);
-    }    
+      return base64url.slice(base64url.indexOf(',') + 1).replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
+    }
     const codeVerifier = await generateCodeVerifier();
-    localStorage.setItem("govbr_code_verifier", await base64URL(codeVerifier));
+    localStorage.setItem("govbr_code_verifier", codeVerifier);
     const params = {
       response_type: "code",
       client_id: "mecredhomologa.c3sl.ufpr.br",