Identity Server4学习系列二之令牌(Token)的概念
1、简介
通过前文知道了Identity Server4的基本用途,现在必须了解一些实现它的基本细节.
2、关于服务端生成Token令牌
头部(Header):
{
“typ”: “JWT”, //token的类型
“alg”: “HS256” //Token使用的加密算法
}
将头部使用Base64编码可得到如下个格式的字符串:
eyJhss6iOaaJIUasddasd
有效载荷(用户信息等关键信息):
{
“iss”: “Online JWT Builder”, //token的签发者
“iat”: 666666, //签发时间
“exp”: 66666, //过期时间
…….
“userid”:10001 //用户Id
//下面可以继续编写用户信息,但不能存放敏感信息
}
有效载荷也使用Base64编码得到如下格式的字符串:
eyJhss6iOaaJIUasddasd
接着将Header和Playload拼接生成一个字符串“eyJhss6iOaaJIUasddasdeyJhss6iOaaJIUasddasd”,使用HS256算法对该字符串进行加密,得到的字符串在通过我们提供的密钥(secret,服务器自己提供的一个字符串)对字符串进行证书签名字符串,最终得到一个包含头部信息(Base64字符串)和有效载荷(用户信息等Base64字符串)和一个进行层层加密的签名字符串组成的一个JWTtoken
3、关于服务端如何解密令牌
当用户登陆成功后,继续访问页面,那么会带上这个token,服务端拿到token之后,对头部信息和有效载荷在进行一次HS256算法和使用当前用户对应的密钥进行一次签名,判断这个签名是否和token中的签名是否一致,就可以判断这个token是否有效.因为密钥存在我们服务器上,别人不可能能伪造.
4、Token的优点
不用保存在服务器,Session需要保存在服务器,而且Session不能跨服务器,只能保存在一台服务器上,所以当用户登陆了这个站点,那么做了负载均衡后,下次访问必须还是访问这个站点,所以可扩展性强比较灵活.
Identity Server4学习系列二之令牌(Token)的概念的更多相关文章
- Identity Server4学习系列三
1.简介 在Identity Server4学习系列一和Identity Server4学习系列二之令牌(Token)的概念的基础上,了解了Identity Server4的由来,以及令牌的相关知识, ...
- Identity Server4学习系列四之用户名密码获得访问令牌
1.简介 Identity Server4支持用户名密码模式,允许调用客户端使用用户名密码来获得访问Api资源(遵循Auth 2.0协议)的Access Token,MS可能考虑兼容老的系统,实现了这 ...
- Identity Server4学习系列一
一.前言 今天开始学习Identity Server4,顺便了解下.Net Core,以便于完善技术栈,最主要的是要跟上.Net的发展潮流,顺便帮助各位整理下官方文档,加上一些我自己对他的理解. 这是 ...
- MyBatis学习系列二——增删改查
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...
- Maven学习系列二(1-5)
Maven学习系列二(1-5) 本文转自 QuantSeven 博客,讲解精炼易懂,适合入门,链接及截图如下 http://www.cnblogs.com/quanyongan/category/47 ...
- scrapy爬虫学习系列二:scrapy简单爬虫样例学习
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
- DocX开源WORD操作组件的学习系列二
DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...
- [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参
[转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...
- RabbitMQ学习系列二-C#代码发送消息
RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列 http://www.80iter.com/blog/1437455520862503 上一篇已经讲了Rabbi ...
随机推荐
- centos 7 安装 python3.6 python3 安装步骤以及pip pip3安装挂载
首先去python官网下载python3的源码包,网址:https://www.python.org/ 或者直接wget下载 wget https://www.python.org/ftp/pytho ...
- struts2访问web资源
通过ActionContext访问 public class TestActionContextAction { public String execute(){ //获取 ActionContext ...
- linux程序员的proc文件系统
1) 设置core文件存放路径和文件名模式: 设置/proc/sys/kernel/core_pattern,如: echo "core" > /proc/sys/kerne ...
- 判断页面是app打开还是浏览器打开。cookie
有个需求需要对页面判断不同的打开方式来最里面的链接进行不同调整, 这样就要分四种情况,app,浏览器X安卓系统,苹果系统,起初是对页面url地址带有的参数(安卓)跟用户代理(苹果)返回值判断navig ...
- gcc和vs在c的一些区别
1.switch中每个标签后面的命令在gcc中需要{}括起来以指明作用域. 2._itoa是非标准的c和c++扩展函数,在linux下可以使用sprintf(string, "%d &q ...
- CGLIB介绍
一.什么是CGLIB? CGLIB是一个功能强大,高性能的代码生成包.它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充.通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接 ...
- android webview使用心得 屏幕宽度自适应
webview中右下角的缩放按钮能不能去掉 settings.setDisplayZoomControls(false); //隐藏webview缩放按钮 让Webview加载的页面居中显示有我知道的 ...
- tarjan算法的补充POJ2533tarjan求度
做题时又遇到了疑惑,说明一开始就没有完全理解 基于dfs的tarjan,搜索时会有四种边 树枝边:DFS 时经过的边,即 DFS 搜索树上的边 前向边:与 DFS 方向一致,从某个结点指向其某个子孙的 ...
- sed,grep,进阶+source+export+环境变量
三剑客之sed 概括流程:从文件或管道中,可迭代读取. 命令格式: sed(软件) 选项 sed命令 输入文件 增 两个sed命令: a: 追加文本到指定行后 i: 插入到指定行前 sed -i '1 ...
- (原创)用c++11打造好用的any
上一篇博文用c++11实现了variant,有童鞋说何不把any也实现一把,我正有此意,它的兄弟variant已经实现了,any也顺便打包实现了吧.其实boost.any已经挺好了,就是转换异常时,看 ...