Получить jwt токен для api

MaksimHelp

Client
Регистрация
23.09.2016
Сообщения
204
Благодарностей
7
Баллы
18
Может кто то сможет подсказать как можно выполнить данный код через зеннопостер для получения токена для api
C#:
Запрос и получение JWT токена:

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.IdentityModel.Tokens.Jwt;
using System.IO;
using System.Net.Http;
using System.Security.Claims;
using System.Security.Cryptography;
using System.Text;
using Microsoft.IdentityModel.Tokens;
using Newtonsoft.Json;
using System.Net;

namespace grx_asp
{
    class Program
    {
        static string privateKey = File.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\priv.txt", Encoding.UTF8);
        static string uid = File.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\uid.txt", Encoding.UTF8);

        static async Task Main(string[] args)
        {
            // Use this line to see the crypto info while debugging:
            // Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;

            byte[] key = Convert.FromBase64String(privateKey);
            RSA rsa = RSA.Create();
            rsa.ImportFromPem(Encoding.UTF8.GetChars(key));

            var claims = new List<Claim>
            {
              new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
              new Claim(JwtRegisteredClaimNames.Exp, DateTimeOffset.Now.AddMinutes(60).ToUnixTimeSeconds().ToString())
            };

            SigningCredentials credentials = new SigningCredentials(new RsaSecurityKey(rsa), SecurityAlgorithms.RsaSha256);
            JwtSecurityToken jwtSecurity = new JwtSecurityToken(new JwtHeader(credentials), new JwtPayload(claims));
            string jwt = new JwtSecurityTokenHandler().WriteToken(jwtSecurity);
            string json = JsonConvert.SerializeObject(new { kid = uid, jwt_token = jwt });


            #region sync_using_HttpWebRequest
            HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(@"https://dauth.stage.garantex.biz/api/v1/sessions/generate_jwt");
            byte[] data = Encoding.ASCII.GetBytes(json);
            webReq.Method = "POST";
            webReq.ContentType = "application/json";
            webReq.ContentLength = data.Length;
            using (Stream stream = webReq.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }
            string respStr;
            using (HttpWebResponse webResp = (HttpWebResponse)webReq.GetResponse())
            {
                using (StreamReader sr = new StreamReader(webResp.GetResponseStream()))
                {
                    respStr = sr.ReadToEnd();
                }
            }
            #endregion sync_using_HttpWebRequest


            #region async_await_using_HttpClient
            var httpClient = new HttpClient();
            HttpContent content = new StringContent(json, Encoding.UTF8, "application/json");
            HttpResponseMessage hrm = await httpClient.PostAsync(@"https://dauth.stage.garantex.biz/api/v1/sessions/generate_jwt", content);
            HttpStatusCode httpStatus = hrm.StatusCode;
            #endregion async_await_using_HttpClient


            Console.ReadLine();
        }
    }
}
 

THE CaHeK

Client
Регистрация
29.01.2016
Сообщения
295
Благодарностей
115
Баллы
43
Я тут прочитал что RSA.ImportFromPem, можно использовать в .NET 5 версии. Zennoposter, насколько мне известно работает с 4.8
 
  • Спасибо
Реакции: MaksimHelp

MaksimHelp

Client
Регистрация
23.09.2016
Сообщения
204
Благодарностей
7
Баллы
18
Нашел решение!
 

THE CaHeK

Client
Регистрация
29.01.2016
Сообщения
295
Благодарностей
115
Баллы
43

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)