记录一次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账号...

(1)
blank

相关推荐

  • knox芯片_推广代理平台

    knox芯片_推广代理平台使用knox进行正向和反向代理,并且进行一些权限认证,使用起来很方便,特别是对于NiFi的相关权限认证(ldap),所以本章节讲下我使用knox代理的服务,以及相关的一些配置选项。/gateway/san在这里面的每个xml被视为一个集群,集群中可以有多个service。topologies目录下的xml文件才会被加载,如果下面有文件夹不会继续查找。默认已经帮我们把所有的配置好了,所以只需要更改下面service的ip就行。这里创建了一个master秘钥,是给knoxgateway的秘钥。

    2022年10月25日
  • MySQL 之全文索引「建议收藏」

    MySQL 之全文索引「建议收藏」最近在复习数据库索引部分,看到了fulltext,也即全文索引,虽然全文索引在平时的业务中用到的不多,但是感觉它有点儿意思,所以花了点时间研究一下,特此记录。引入概念通过数值比较、范围过滤等就可以完成绝大多数我们需要的查询,但是,如果希望通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值比较。全文索引就是为这种场景设计的。你可能会说,用like…

  • sdk e qq(E+)

    1.说明:教程属于官方E聊SDK-简介(1)进入官网进入管理台SDK版本:v1.01技术交流QQ群:4716889372.简介:E聊SDK是一套适用于PC端,移动端的即时通讯解决方案,源代码开放。E聊整合了即时通讯的基础能力,使用E聊,您可以让您的应用快速接入即时聊天的功能。E聊现已适配PCWeb,移动Web,Android,iOS等平台。3.系统架构:3.1各模块介绍E聊服务器:提供了基础的消息转发功能,用户管理、群组管理等功能;E聊管理台:向E聊服务器申请接入

  • java高并发下数据入库

    java高并发下数据入库java高并发下数据批量入库该服务利用线程池并结合缓存类来处理高并发下数据入库问题,做到实时数据存入redis和数据批量入库,使用的时候需要修改为自己的业务数据,该服务暂时适合下面两种情况:1、达到设置的超时时间。2、达到最大批次。packageio.renren.service.impl;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONArray;importlombok.extern.slf4j.Slf

  • 纯CSS实现自定义单选框和复选框

    纯CSS实现自定义单选框和复选框<!DOCTYPEhtml><html> <head> <metacharset=”utf-8″> <title></title> <styletype=”text/css”> #main{ display:flex; justify-content:center; align-items:center; flex-wrap:wrap; } .

  • 请说下封装 vue 组件的过程?_vue 自己封装过哪些通用组件

    请说下封装 vue 组件的过程?_vue 自己封装过哪些通用组件vue3封装组件发布到npm上

发表回复

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

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