jwt token vb.net validation JWT EM VBNET JWT EM VBNET JWT EM VBNET

The solution for “jwt token vb.net validation JWT EM VBNET JWT EM VBNET JWT EM VBNET” can be found here. The following code will assist you in solving the problem.

class Program {

static string key = “401b09eab3c013d4ca54922bb802bec8fd5318192b0a75f201d8b3727429090fb337591abd3e44453b954555b7a0812e1081c39b740293f765eae731f5a65ed1”;

static void Main(string[] args) {
var stringToken = GenerateToken();

private static string GenerateToken() {
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));

var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);

var header = new JwtHeader(credentials);

var payload = new JwtPayload {
{ “some “, “hello “},
{ “scope”, “world”},

var secToken = new JwtSecurityToken(header, payload);
var handler = new JwtSecurityTokenHandler();

return handler.WriteToken(secToken);


private static bool ValidateToken(string authToken) {
var tokenHandler = new JwtSecurityTokenHandler();
var validationParameters = GetValidationParameters();

SecurityToken validatedToken;
IPrincipal principal = tokenHandler.ValidateToken(authToken, validationParameters, out validatedToken);
Thread.CurrentPrincipal = principal;
return true;

private static TokenValidationParameters GetValidationParameters() {
return new TokenValidationParameters() {
Dim ac As ApiClient = New ApiClient()
Dim privateKeyStream() As Byte = Convert.FromBase64String(PrivateKey)
Dim tokenInfo As OAuth.OAuthToken = ac.RequestJWTUserToken(“INTEGRATION_ID”, “ACCOUNT_ID”, “https://account-d.docusign.com/oauth/token”, privateKeyStream, 1)
Dim privateKeyStream As Stream = New FileStream(“D:\docusign.pem”, FileMode.Open)
‘Dim privateKeyStream As Stream = New MemoryStream(Encoding.UTF8.GetBytes(PK))
Using SR = New StreamReader(privateKeyStream)
If Not SR Is Nothing And SR.Peek() > 0 Then
Dim privateKeyBytes() As Byte = ReadAsBytes(privateKeyStream)
‘Dim privateKeyBytes() As Byte = StreamToByteArray(privateKeyStream)
‘Dim privateKeyBytes() As Byte = Convert.FromBase64String(PrivateKey)
‘Dim privateKeyBytes() As Byte = Encoding.UTF8.GetBytes(PrivateKey)

Dim privateKeyS As String = Encoding.UTF8.GetString(privateKeyBytes)

Dim handler As JwtSecurityTokenHandler = New JwtSecurityTokenHandler()
handler.SetDefaultTimesOnTokenCreation = False

Dim descriptor As SecurityTokenDescriptor = New SecurityTokenDescriptor()
descriptor.Expires = DateTime.UtcNow.AddHours(1)
descriptor.IssuedAt = DateTime.UtcNow

Dim scopes As List(Of String) = New List(Of String)

descriptor.Subject = New ClaimsIdentity()
descriptor.Subject.AddClaim(New Claim(“scope”, String.Join(” “, scopes)))
descriptor.Subject.AddClaim(New Claim(“aud”, “account-d.docusign.com”))
descriptor.Subject.AddClaim(New Claim(“iss”, “INTEGRATION_ID”))
descriptor.Subject.AddClaim(New Claim(“sub”, “ACCOUNT_ID”))

Dim RSA = CreateRSAKeyFromPem(privateKeyS)
Dim rsaKey As RsaSecurityKey = New RsaSecurityKey(RSA)
descriptor.SigningCredentials = New SigningCredentials(rsaKey, SecurityAlgorithms.RsaSha256Signature)

Dim Token = handler.CreateToken(descriptor)
Dim jwtToken As String = handler.WriteToken(Token)

Dim baseUri As String = String.Format(“https://{0}/”, basePath)
Dim RestClient As RestClient = New RestClient(baseUri)
RestClient.Timeout = 10000

Dim contentType As String = “application/x-www-form-urlencoded”

Dim formParams As New Dictionary(Of String, String)
formParams.Add(“grant_type”, OAuth.Grant_Type_JWT)
formParams.Add(“assertion”, jwtToken)

Dim queryParams As New Dictionary(Of String, String)

Dim headerParams As New Dictionary(Of String, String)
headerParams.Add(“Content-Type”, “application/x-www-form-urlencoded”)
headerParams.Add(“Cache-Control”, “no-store”)
headerParams.Add(“Pragma”, “no-cache”)

Dim fileParams As New Dictionary(Of String, FileParameter)
Dim pathParams As New Dictionary(Of String, String)

Dim postBody As Object = Nothing

Dim request As RestRequest = PrepareRequest(basePath, Method.POST, queryParams, postBody, headerParams, formParams, fileParams, pathParams, contentType)

Dim response As IRestResponse = RestClient.Execute(request)

If (response.StatusCode >= HttpStatusCode.OK And response.StatusCode < HttpStatusCode.BadRequest) Then Dim tokenInfo As OAuth.OAuthToken = JsonConvert.DeserializeObject(Of OAuth.OAuthToken)(response.Content) Return tokenInfo.access_token Else Throw New ApiException(response.StatusCode, "Error while requesting server, received a non successful HTTP code " & response.ResponseStatus & " with response Body: " + response.Content, response.Content) End If Else Throw New ApiException(400, "Private key stream not supplied or is invalid!") End If End Using Dim PrivateKey As String = "MIIEowIBAAKCAQEAjtTe7UUP/CBI9s...BLABLABLA...JfwZ2hHqFPXA9ecbhc0".Replace(vbLf, "").Replace(vbCr, "") Dim ar1 As JObject = New JObject() ar1.Add("typ", "JWT") ar1.Add("alg", "RS256") Dim header As String = Base64UrlEncoder.Encode(ar1.ToString) Dim ar2 As JObject = New JObject() ar2.Add("iss", "INTEGRATION_ID") ar2.Add("sub", "GUID_VERSION_OF_USER_ID") ar2.Add("iat", DateDiff(DateInterval.Second, New Date(1970, 1, 1), Now().ToUniversalTime)) ar2.Add("exp", DateDiff(DateInterval.Second, New Date(1970, 1, 1), DateAdd(DateInterval.Hour, 1, Now().ToUniversalTime))) ar2.Add("aud", "account-d.docusign.com") ar2.Add("scope", "signature") Dim body As String = Base64UrlEncoder.Encode(ar2.ToString) Dim stringToSign As String = header & "." & body Dim bytesToSign() As Byte = Encoding.UTF8.GetBytes(stringToSign) Dim keyBytes() As Byte = Convert.FromBase64String(PrivateKey) Dim privKeyObj = Asn1Object.FromByteArray(keyBytes) Dim privStruct = RsaPrivateKeyStructure.GetInstance(privKeyObj) Dim sig As ISigner = SignerUtilities.GetSigner("SHA256withRSA") sig.Init(True, New RsaKeyParameters(True, privStruct.Modulus, privStruct.PrivateExponent)) sig.BlockUpdate(bytesToSign, 0, bytesToSign.Length) Dim signature() As Byte = sig.GenerateSignature() Dim sign As String = Base64UrlEncoder.Encode(signature) Return header & "." & body & "." & sign

Thank you for using DeclareCode; We hope you were able to resolve the issue.

More questions on [categories-list]

Similar Posts