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)