Guest User

Untitled

a guest
Nov 3rd, 2023
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.31 KB | None | 0 0
  1. @using System.Security.Cryptography
  2. @using System.Text
  3. @using IdentityModel
  4. @inject NavigationManager NavigationManager
  5. @{
  6.     var code_verifier = GenerateCodeVerifier();
  7.     var code_challenge = GenerateCodeChallenge(code_verifier);
  8.  
  9.     var returnUrl = Uri.EscapeDataString(NavigationManager.Uri);
  10.     var loginUrl = $"https://localhost:5001/connect/authorize" +
  11.                    $"?client_id=dev" +
  12.                    $"&response_type=code" +
  13.                    $"&scope=openid%20profile%20verification" +
  14.                    $"&redirect_uri=https://localhost:5137/authentication/login-callback" +
  15.                    $"&state={returnUrl}" +
  16.                    $"&code_challenge={code_challenge}" +
  17.                    $"&code_challenge_method=S256";
  18.  
  19.     NavigationManager.NavigateTo(loginUrl, forceLoad: true);
  20. }
  21.  
  22. @code {
  23.  
  24.     private static string GenerateCodeVerifier()
  25.     {
  26.         var provider = RandomNumberGenerator.Create();
  27.         var byteArray = new byte[32];
  28.         provider.GetBytes(byteArray);
  29.         return Base64Url.Encode(byteArray);
  30.     }
  31.  
  32.     private static string GenerateCodeChallenge(string codeVerifier)
  33.     {
  34.         var buffer = Encoding.UTF8.GetBytes(codeVerifier);
  35.         var sha256 = SHA256.Create();
  36.         return Base64Url.Encode(sha256.ComputeHash(buffer));
  37.     }
  38.  
  39. }
Add Comment
Please, Sign In to add comment