como retornar uma api usando jwt e vbnet com uma chave privada code example
Example 1: JWT EM VBNET
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
Example 2: JASON WEB TOKENS EM VBNET COM WINDOWS FORMS
var headerAndPayload = base64Encode(header) + "." + base64Encode(payload);
var secretkey = "@everone:KeepitSecret
signature = HMACSHA256(headerAndPayload, secretkey);
Example 3: conceito jwt em vbnet com exemplos
const crypto = require('crypto');
const header = JSON.stringify({
'alg': 'HS256',
'typ': 'JWT'
});
const payload = JSON.stringify({
'email': 'aylan@boscarino.com',
'password': 'ya0gsqhy4wzvuvb4'
});
const base64Header = Buffer.from(header).toString('base64').replace(/=/g, '');
const base64Payload = Buffer.from(payload).toString('base64').replace(/=/g, '');
const secret = 'my-custom-secret';
const data = base64Header + '.' + base64Payload;
const signature = crypto
.createHmac('sha256', secret)
.update(data)
.digest('base64');
const signatureUrl = signature
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=/g, '')
console.log(signatureUrl);