Saltar al contenido

Ejemplo de código de validación del token jwt vb.net

Posterior a de nuestra prolongada selección de datos pudimos resolver este contratiempo que tienen ciertos de nuestros usuarios. Te compartimos la respuesta y deseamos que te resulte de mucha ayuda.

Ejemplo 1: validación de jwt token vb.net

class Program 

    staticstringkey="401b09eab3c013d4ca54922bb802bec8fd5318192b0a75f201d8b3727429090fb337591abd3e44453b954555b7a0812e1081c39b740293f765eae731f5a65ed1";static void Main(string[] args) 
        var stringToken = GenerateToken();
        ValidateToken(stringToken);
    

    private staticstring 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();returnhandler.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() 
            //NOT A CLUE WHAT TO PLACE HERE
        ;
    

Ejemplo 2: JWT EM VBNET

Dim privateKeyStream AsStream= New FileStream("D:docusign.pem", FileMode.Open)
'Dim privateKeyStream AsStream= New MemoryStream(Encoding.UTF8.GetBytes(PK))Using SR = New StreamReader(privateKeyStream)IfNot SR Is Nothing And SR.Peek()>0ThenDim 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 AsString= Encoding.UTF8.GetString(privateKeyBytes)DimhandlerAs 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(OfString)= New List(OfString)
        scopes.Add(OAuth.Scope_SIGNATURE)

        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 AsString=handler.WriteToken(Token)Dim baseUri AsString=String.Format("https://0/", basePath)Dim RestClient As RestClient = New RestClient(baseUri)
        RestClient.Timeout=10000Dim contentType AsString="application/x-www-form-urlencoded"Dim formParams As New Dictionary(OfString,String)
        formParams.Add("grant_type", OAuth.Grant_Type_JWT)
        formParams.Add("assertion", jwtToken)Dim queryParams As New Dictionary(OfString,String)Dim headerParams As New Dictionary(OfString,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(OfString, FileParameter)Dim pathParams As New Dictionary(OfString,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)ThenDim 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)EndIfElse
        Throw New ApiException(400,"Private key stream not supplied or is invalid!")EndIfEndUsing

Ejemplo 3: JWT EM VBNET

Dim PrivateKey AsString="MIIEowIBAAKCAQEAjtTe7UUP/CBI9s...BLABLABLA...JfwZ2hHqFPXA9ecbhc0".Replace(vbLf,"").Replace(vbCr,"")Dim ar1 As JObject = New JObject()
ar1.Add("typ","JWT")
ar1.Add("alg","RS256")Dim header AsString= 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 AsString= Base64UrlEncoder.Encode(ar2.ToString)Dim stringToSign AsString= 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 AsString= Base64UrlEncoder.Encode(signature)Return header &"."& body &"."& sign

Ejemplo 4: JWT EM VBNET

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)

Aquí tienes las comentarios y valoraciones

Recuerda que te damos el privilegio aclarar tu experiencia si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *