记录一次C#使用JWT单点登录

记录一次C#使用JWT单点登录好久没更新了,最近确实比较忙,现在弄完后,第一时间来记录一下最近学到的一些东西JWT单点登录一、简单介绍 JWT全称是JSONWebToken,是一种是目前最流行的跨域身份验证解决方案。为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,该token也可直接被用于认证,也可被加.

大家好,又见面了,我是你们的朋友全栈君。

好久没更新了,最近确实比较忙,现在弄完后,第一时间来记录一下最近学到的一些东西

JWT单点登录

一、简单介绍

  1. JWT全称是JSON Web Token,是一种是目前最流行的跨域身份验证解决方案。为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,该token也可直接被用于认证,也可被加密,单点登录的含义这里就不具体介绍了

  2. JWT实际上一个字符串由三部分组成头部(Header)、载荷(Payload)与签名(signature)

二、具体使用

1.下载jwt工具包

我这里就以一个新的mvc项目来演示,创好项目后,在nuget包管理器中,下载jwt,不要下错了哈记录一次C#使用JWT单点登录

等待安装完成

记录一次C#使用JWT单点登录

 

2.方法使用

2.1.生成jwt_token

导入这些命名空间记录一次C#使用JWT单点登录,然后进行生成操作

        public string GetJWT_Token() 
        {
            var payload = new Dictionary<string, object>
            {
                { "claim1", 0 },
                { "claim2", "claim2-value" }
            };
            const string secret = "GQDstcKsx0NHjPOuXOYg5MbeJ1XT0uFiwDVvVBrk";

            IJwtAlgorithm algorithm = new HMACSHA256Algorithm(); // symmetric
            IJsonSerializer serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);

            var token = encoder.Encode(payload, secret);
            return token;
        }

这里简单测试一下用postman或者浏览器直接访问都可以,我这里就直接浏览器测试了,生成成功后会得到一串字符串

记录一次C#使用JWT单点登录

可以看到这个字符串是由三部分组成的,这样就得到一个jwttoken,然后访问别人的网站时候带上这串字符串,他就会同样的jwt方法去解析出你字符串附带的用户信息之类的

这里把解析的方法也提供一下

public string DecodingToken(string Token) 
        {
            string token = Token;
//这里密钥同上,需要两边密钥同步才能解出来
            const string secret = "GQDstcKsx0NHjPOuXOYg5MbeJ1XT0uFiwDVvVBrk";

            try
            {
                IJsonSerializer serializer = new JsonNetSerializer();
                var provider = new UtcDateTimeProvider();
                IJwtValidator validator = new JwtValidator(serializer, provider);
                IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
                IJwtAlgorithm algorithm = new HMACSHA256Algorithm(); // symmetric
                IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder, algorithm);

                var json = decoder.Decode(token, secret, verify: true);
                return json;
            }
            catch (TokenExpiredException ex)
            {
                return ex.Message;
            }
            catch (SignatureVerificationException ex)
            {
                return ex.Message;
            }
        }

把上面获得的token代入进去,就可以解析出值了

记录一次C#使用JWT单点登录

后面怎么操作这些值就根据自己的业务逻辑来处理了


后面有时间在更新一篇rabbitmq的操作,今年应该就这样了,工作第一年,学习的东西还是不够多还需继续努力哈哈

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143910.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月20日 下午4:00
下一篇 2022年5月20日 下午4:00


相关推荐

  • currentstyle 织梦_织梦arclist标签支持高亮currentstyle属性方法

    currentstyle 织梦_织梦arclist标签支持高亮currentstyle属性方法找到include/taglib/arclist.lib.php第一步:查找:$channelid=$ctag->GetAtt(‘channelid’);替换:$channelid=$ctag->GetAtt(‘channelid’);$currentstyle=$ctag->GetAtt(‘currentstyle’);第二步:查找:$ct…

    2022年7月14日
    17
  • Origin简单绘图

    Origin简单绘图一、从cadence导出数据仿真生成波形之之后,鼠标选中波形,右击—>SendTo—>Export,进行csv数据的保存。打开该csv文件,删掉第一行,第一行是是横纵坐标的标识,左侧第一列是横坐标值,右侧列是纵坐标值。二、origin简单绘图双击图标打开origin导入csv数据可选中多个csv文件导入为了让两个csv的数据同时显示,在弹出的对话框进行以下操作(默认第二个csv数据会覆盖第一个csv数据)。设置好之后点击“确定”,两个csv数据均被导入到了o

    2022年6月1日
    40
  • mac pro M1(ARM)安装:VMWare Fusion及linux(centos7/ubuntu)(一)

    mac pro M1(ARM)安装:VMWare Fusion及linux(centos7/ubuntu)(一)0.引言最近正好在macM1上安装centos虚拟机以及开发环境,特记录下,以供后续有需要的同学参考1.下载1.1安装VMwareFusion我选择在VMware上运行虚拟机,所以需要下载VMwareFusion下载地址:VMwareFusionforM1选择ARM版本下载,目前是官方推出的针对M1的试用版本,无需激活,后续是否收费还未可知下载后双击安装即可1.2下载centoscentosform1下载地址:centosform1北京外国语大学镜像地址(推荐下

    2022年10月17日
    8
  • 爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏

    爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏文章目录一、栈????栈的概念及结构????栈的实现二、队列????队列的概念及结构????队列的实现三、栈和队面试题四、概念选择题????1????2一、栈????栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称库栈底。栈中的数据元素遵守后进先出LIFO(LastInFirstOut)的原则栈有两个经典的操作1️⃣压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。2️⃣出栈:栈的删除操

    2022年6月2日
    40
  • custom cursor:手把手教你玩转自定义鼠标指针,搞钱神器!

    custom cursor:手把手教你玩转自定义鼠标指针,搞钱神器!

    2026年3月15日
    1
  • DCache-CacheServer分析(一)

    DCache-CacheServer分析(一)DCache 是一个基于 TARS 框架开发的分布式 NoSQL 存储系统 数据采用内存存储 支持连接后端 DB 实现数据持久化 DCache 采用集群模式 具有高扩展 高可用的特点 本文对 DCache 中 CacheServer 的结构做了总体分析 希望对初识 DCache 的开发者有所帮助

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号