记录一次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的操作,今年应该就这样了,工作第一年,学习的东西还是不够多还需继续努力哈哈

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(2)


相关推荐

  • 沟通和认同:自我的塑造与展现

    沟通和认同:自我的塑造与展现一、沟通和自我1、自我概念:指对自己所持有的相对稳定的知觉2、自尊:对自我价值的评估3、反映评价:我们每个人得出的自我概念反映的是我们认为别人看待我们的方式4、社会比较:依据与他人对照的方式评估自身5、自我概念是被周遭环境塑造出来的,塑造的过程以两种方式呈现:反映评价和社会比较6、自我概念的特征:6.1、自我概念是主观的(有些人长期乃至永久地经受着过度的自我怀疑和批判之苦)(当我们经历负面情绪的时候要比我们心情好时对自己更挑剔)6.2、自我概念抗拒改变7、接受一个

  • UE4/UE5 使用Unreal Datasmith完全教程

    UE4/UE5 使用Unreal Datasmith完全教程(2019.12.9)Datasmith功能已内置到虚幻4.24版本Datasmith支持导入Twinmotion:Twinmotion教程汇总(2021.4.2)Datasmith安装到4.20-4.23版本:UE4在4.20-23版本安装Datasmith插件(2021.3.30更新)Datasmith导出插件:Datasmith导出插件(2021.4.12更新)导入sketchup草图大师:草图大师SU导入Unity和虚幻UE4对比导入Revit2018.3+:UE4使用Da.

  • 数据库中间件介绍_数据中间件

    数据库中间件介绍_数据中间件文章目录1、Cobar2、Mycat3、OneProxy4、kingshard5、Vitess6、Atlas7、MaxScale8、MySQLRoute9、ShardingSpere(Sharding-JDBC)10、DRDS1、CobarCobar属于阿进而B2B事业群,始于2008年,在阿里服役年多,接管3000+个MySql数据库的schema,集群日处理在线SQL请求50亿次以上。由于Cobar发起人离职,Cobar停止维护。2、Mycat开源社区在阿里Cobar基础上进行

    2022年10月28日
  • 【云栖精选12月刊】2017年,阿里巴巴开源那些事

    【云栖精选12月刊】2017年,阿里巴巴开源那些事

  • 首选DNS服务器地址不显示,首选dns服务器如何设置?如何设置DNS地址

    首选DNS服务器地址不显示,首选dns服务器如何设置?如何设置DNS地址首选dns服务器如何设置?如何设置DNS地址分类:云服务资讯编辑:聊聊云计算浏览量:1652021-01-2915:18:29现在有很多朋友对于首选dns服务器的设置方法不是很了解,不知道如何操作,今天新网就给大家详细的介绍下首选dns服务器如何设置以及如何设置DNS地址等问题,希望提供些帮助。首选dns服务器怎么设置?在“开始”中找到“运行”或者直接【Win】+【R】,然后输入“cmd”进入管…

  • dotnet publish 不生成pdb文件

    dotnet publish 不生成pdb文件文章目录引言解决方案直接修改`.csproj`文件通过vs修改引言随着项目的体积越来越大,导致publish的时候文件越来越多,然而生产环境中其实pdb调试文件并没有什么作用(remotedebug)除外,所以也就灵机一动想着是否可以不生成呢?解决方案直接修改.csproj文件<PropertyGroupCondition=”‘$(Configuration)|$(Platform)’==’Release|AnyCPU'”><DebugType>none&lt

发表回复

您的电子邮箱地址不会被公开。

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