首页 > 编程语言 >c#语法JWT请求接口

c#语法JWT请求接口

时间:2023-12-28 11:15:29浏览次数:25  
标签:string c# JWT System 接口 Json new using ESBPM

NuGet下载System.IdentityModel.Tokens.Jwt包 下面是获取token,需要引用对应的jwt


using System.IdentityModel.Tokens.Jwt;
using Microsoft.IdentityModel.Tokens;


private void button1_Click(object sender, EventArgs e) { string secretId = "a1bc3900ba8c48b3"; // 发行人 string secretKey = "3c21642c3d8f43fc9f28ea608709cac5"; // 密钥 string token = CreateToken(secretId, secretKey); textBox1.Text = token; // 将令牌显示到文本框中 } public static string CreateToken1(string secretId, string secretKey) { // 创建 JWT 对象 var tokenDescriptor = new SecurityTokenDescriptor { Subject = new System.Security.Claims.ClaimsIdentity(new[] { new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Name, secretId) }), Expires = DateTime.UtcNow.AddHours(1), // 设置过期时间 SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)), SecurityAlgorithms.HmacSha256Signature) }; // 将 JWT 对象转换为 JSON 字符串 var json = JsonConvert.SerializeObject(tokenDescriptor); return json; }

下面是完整的请求,可按需更取需要的代码

using ESBPM.Framework.Component; //IOC组件
using ESBPM.Framework.IComponent;
using ESBPM.Framework.IComponent.Log;
using ESBPM.UI.IBiz;//UI框架接口组件
using ESBPM.Form.IBiz;//表单接口组件
using ESBPM.Workflow.Designer.IBiz;//工作流接口组件
using ESBPM.Organization.IBiz;//组织结构接口组件
using ESBPM.Framework.Public.Entity; //实体对象
using ESBPM.Framework.Tool; //工具类
using Newtonsoft.Json; //工具类
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Collections.Generic;
using System.Globalization;
using System.Security.Cryptography;
using System.Linq;
using System.Web;
using CYQ.Data.EsHelp;//操作库操作组件(mssqlserver,mysql,oracle)
using System.IdentityModel.Tokens.Jwt;
using Microsoft.IdentityModel.Tokens;

public class TTTTTIEsPlugin : IEsPlugin //每个插件编写必须要继承IEsPlugin接口
{
    private static IZyl Zyl = ContainerContext.Container.Resolve<IZyl>();
    public object RunServices<T>(T objArr) //@RunServices 固定方法名称,此方法带参数,参数值为表单字段值
    {
        if (objArr is JObject)
        {
            var postdata = objArr as JObject;//得到参数
            var loginType = postdata["loginType"] == null ? "" : postdata["loginType"].ToString();//类型
        }
        else
        {
            Dictionary<string, object> postdata = objArr as Dictionary<string, object>;///// 组件集成,传过来的是Dictionary<string, object>
            var loginType = postdata["loginType"] == null ? "" : postdata["loginType"].ToString();//类型
        }
        try
        {
            StringBuilder Json = new StringBuilder();
            Json.Append("{");
            Json.Append("\"Name\":\"小马\",");
            Json.Append("\"logA\":\"logA\",");
            Json.Append("\"accountNo\":\"" + loginType + "\",");
            Json.Append("\"logTime\":\"2023-12-26 05:50:18\"");
            Json.Append("}");
            String jsonStr = Json.ToString();
            Zyl.Log("请求接口", "请求参数:" + jsonStr);//日志记录
            string secretId = "改成自己的发行人"; // 发行人  
            string secretKey = "改成自己的密钥"; // 密钥  
            string IRM_Token = CreateToken(secretId, secretKey);//获取tokeng
            string url = "https://www.baidu.com/?tn=88093251_92_hao_pg";//自行更改
            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);//webRequest请求url
            httpRequest.Method = "POST";
            httpRequest.Headers.Add("Authorization", "Bearer " + IRM_Token);//表头验证
            httpRequest.ContentType = "application/json";//是一种编码格式,窗体数据被编码为名称/值对,是标准的编码格式。
            string postStr = jsonStr;

            byte[] bTemp = System.Text.Encoding.UTF8.GetBytes(postStr);
            httpRequest.ContentLength = bTemp.Length;

            System.IO.Stream smWrite = httpRequest.GetRequestStream(); //加入请求参数
            smWrite.Write(bTemp, 0, bTemp.Length);
            smWrite.Close();

            HttpWebResponse hResponse = (HttpWebResponse)httpRequest.GetResponse();  //响应api
            StreamReader srReader = new StreamReader(hResponse.GetResponseStream(), Encoding.UTF8);
            string strResult = srReader.ReadToEnd();
            Zyl.Log("请求接口", "返回结果:" + strResult);
            srReader.Close();
            hResponse.Close();

        }
        catch (Exception el)
        {

            throw;
        }
        return objArr;
    }
    public static string CreateToken(string secretId, string secretKey)
    {
        // 创建 JWT 对象  
        var tokenDescriptor = new SecurityTokenDescriptor
        {
            Subject = new System.Security.Claims.ClaimsIdentity(new[] { new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Name, secretId) }),
            Expires = DateTime.UtcNow.AddHours(1), // 设置过期时间  
            SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)), SecurityAlgorithms.HmacSha256Signature)
        };

        // 生成 JWT 并返回 token 字符串  
        var tokenHandler = new JwtSecurityTokenHandler();
        var token = tokenHandler.CreateToken(tokenDescriptor);
        return tokenHandler.WriteToken(token);
        
    }
}

 

标签:string,c#,JWT,System,接口,Json,new,using,ESBPM
From: https://www.cnblogs.com/xiaoze99/p/17932275.html

相关文章

  • Apache静态网站权限配置
    <VirtualHost*:80>DocumentRoot/var/www/htmlErrorLog${APACHE_LOG_DIR}/error.logCustomLog${APACHE_LOG_DIR}/access.logcombined<Directory/>AllowOverrideAllRequireallgranted</Directory></......
  • CRM系统的主要功能有哪些?如何帮助中小企业盈利?
    巴菲特曾说:“设计出的工具越多,使用工具的人就得越聪明。“”如果您是中小企业主,想要企业更好地发展,您都可以考虑使用CRM管理系统。它可以帮助中小企业有效地管理客户,提高业务效率,实现快、稳、准的发展。本文将详细的描述公司管理系统CRM对中小型公司意味着什么???一、什么是CRM系......
  • CRM对企业有哪些好处?看完这篇就懂了
    CRM管理系统能够提供各种帮助,并为您的业务带来许多好处。一般来说,这些好处都涉及培养潜在客户,并在客户进入和通过销售管道时为他们提供支持。CRM客户关系管理系统对中小企业的用处都有什么?简单归类一下:1、更好的客户服务2、增加销售额3、提高客户保留率4、数据详细分析5、更......
  • Handler接口
    typeHandlerinterface{ServeHTTP(ResponseWriter,*Request)}处理http请求的接口---相当于Java的Controller方法配合http包下的方法使用funcListenAndServe(addrstring,handlerHandler)error{server:=&Server{Addr:addr,Handler:handler}retu......
  • css学习知识
    CSS规则由两个主要的部分构成:选择器,以及一条或多条声明。CSS声明总是以分号;结束,声明总以大括号{}括起来。id选择器可以为标有特定id的HTML元素指定特定的样式。HTML元素以id属性来设置id选择器,CSS中id选择器以"#"来定义。class选择器用于描述一组元素的样式,可......
  • CRM有哪些好用的功能?CRM特色功能解析
    作为一款知名的CRM管理系统,CRM有哪些好用功能?鉴于CRM有四个版本可供选择,因此这里列出了这些版本共有的5个超好用能,它们分别是:1、销售团队自动化2、个性化定制3、营销自动化4、自动化工作流5、团队协作。想知道这些功能的具体作用吗,跟我一起往下看吧!1、销售自动化使用CRM......
  • PredicateBuilder
    usingGate.ExpressionBuilder;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Linq.Expressions;usingSystem.Reflection;usingSystem.Text;usingSystem.Threading.Tasks;namespaceFast.Framework{publicstaticclassP......
  • ACL&SCO链路介绍
    1、蓝牙协议栈体系结构按照各层协议在整个蓝牙协议体系中所处的位置,蓝牙协议可分为三大类:1,底层协议:射频RF,基带协议和链路管理协议。2,中间层协议:逻辑链路管理和适配协议,服务发现协议,串口仿真协议,以及电话通信协议等3,应用层协议:对应各种应用的profiles2,链路管理协议:链路管理协......
  • 【Java核心基础】Java中foreach方法核心总结
    Java中的foreach循环适用于多种场景:遍历数组、集合框架、处理列表数据等,可替代传统for循环,使代码更简洁。结合Lambda表达式和StreamAPI,可实现声明式数据处理,虽然不能直接遍历Map的键值对,但可遍历键或值集合,在多线程环境下,结合并行流使用foreach可并行处理数据。使用foreach能简......
  • Docker 部署 Prometheus Webhook DingTalk
    介绍在此部分简要介绍PrometheusWebhookDingTalk的作用和使用Docker部署的优势。概述将要涵盖的常用参数以及如何配置Docker容器的关键概念。步骤1:获取PrometheusWebhookDingTalk代码解释如何获取PrometheusWebhookDingTalk的代码并进入存储库目录。gitcloneh......