Restful下的token认证方案

Restful讲究一个无状态的特性(stateless),这就不能把一些例如登陆后的认证信息写进cookie的传统方式,

目前探索的是采用token的方式来进行权限的识别。

刚开始研究token的时候,很容易查到比较流行的JWT(JSON Web Token)的很多资料,目前有RFC的规范(尽管还只是个草案)。

简单来说JWT规定了可以自定义的CLAIM区域,并且可以加密(要在头部指明加密方法),如下图所示

(本图来自于https://jwt.io)

由于采用的非对称加密的方式,所以一般情况下信息还是比较安全的(有人对于header里边标明了加密算法而有些担忧,提出改进的是只是标明自定义算法type例如"alg:1")。

JWT的优势显而易见,这样认证过的一些信息就可以放入其中,并且下次用户再次访问的时候,只需要将JWT返回就好,服务器根据解密JWT的内容来获取一些认证信息,并且可以在JWT里设定过期的时间,用于识别登陆时效性。

但是如果用于用户登陆认证方面,就必须满足用户主动logout的情况,但是由于这些认证后的信息都保存在JWT里,所以有一种建议是将JWT里边的过期时间设置的较短,每次成功访问后刷新过期时间,一旦过期也就理解为logout了。这种做法,并不满足logout的

动作,所以更常用的一种做法就是将JWT生成后保存在数据库中例如保存在redis中,并由redis设定过期时间。

分析到此,发现JWT还是要保存在数据库中,而且其认证后的信息某种意义上来说虽然加密了,但是还是暴露在public当中,这一点让我总感觉不舒服。

于是,一个新的方案产生了,既然逃不出要利用数据库,那么就将认证后的信息保存在数据库中(例如redis),返回给用户的token就是为了识别唯一性,当用户成功认证后将获得一个token,这个token并不包含任何信息,只是为了用户下次再次访问的时候,后台能够在数据库中查询到相关信息。

(之所以用redis,考虑到其读取K-V的速度和命中率都很不错)

时间: 2024-08-29 09:54:08

Restful下的token认证方案的相关文章

微服务架构下的身份认证

从单体应用架构到分布式应用架构再到微服务架构,应用的安全访问在不断的经受考验.为了适应架构的变化.需求的变化,身份认证与鉴权方案也在不断的变革.面对数十个甚至上百个微服务之间的调用,如何保证高效安全的身份认证?面对外部的服务访问,该如何提供细粒度的鉴权方案?本文将会为大家阐述微服务架构下的安全认证与鉴权方案. 单体应用 VS 微服务 随着微服务架构的兴起,传统的单体应用场景下的身份认证和鉴权面临的挑战越来越大.单体应用体系下,应用是一个整体,一般针对所有的请求都会进行权限校验.请求一般会通过一个

讯飞开放平台上线业界首个多生物特征融合认证方案

年末岁初,是各类犯罪案件的高发时段,而其中不法分子通过倒卖.盗取他人身份信息后,利用身份认证漏洞可办理银行卡.电话卡,进而从事各种违法犯罪活动的案件近来尤为常见.从前不久微信H5链接盗取支付宝存款的谣言散播中可见广大用户对身份安全认证,尤其是金融领域的安全认证的一贯担忧.话说讯飞开放平台刚刚上线多生物特征融合认证方案,免费向业界开发者开放,“声纹+人脸”验证护航全民信息安全.一起来探讨下,到底有什么特点?案例演示地址:讯飞开放平台多生物特征融合认证方案 信息时代掉,队的身份验证 身处信息社会,如

Linux下LDAP统一认证解决方案

Linux下LDAP统一认证解决方案 --http://www.cangfengzhe.com/wangluoanquan/3.html 企业内部需要认证的服务很多,员工需要记住很多的密码, 即使对这些服务进行相同的密码设置,也存在很大的安全隐患.笔者目前工作的企业就是如此,每一个新员工的到来管理员都要初始化很多密码,而这些密码都被设置成了“888888”等弱密码,由于各种软件的认证机制之间没有使用一个统一的标准,员工无法一次性修改所有服务的密码,这导致很多即使是入职很久的员工都还在使用这个“众

单点登录认证方案思路,求好思路回复

统一用户认证方案思路 实现目标: 1.实现单点登录,使用单点登录帐号登录后,可访问多个被授权的系统. 2.尽量不让用户进行客户端安装,有些技术如CAS,SAML,P3P欢迎点评 免登录访问方式可能存在:  1.当前系统界面连接其他系统的界面,(场景:多系统集成一个系统)  2.当前系统访问其他系统的有验证的服务接口, (场景: 访问被授权的系统的服务)  3.在新的浏览器标签页直接打开其他系统的页面 .(场景: 进入其他系统免登录) 2.增强安全验证性,采用 cookie,token,sessi

HttpClient基于HTTP协议认证方案

简介 HttpClient支持三种不同形式的HTTP协议验证发难:Basic,Digest和NTLM.这些都可以解决同http服务器或是代理服务器之间的认证. 认证服务器 HttpClient处理服务器认证几乎是透明的,发开者只需要做一件事情,提供一个合法login证书.此证书被保存到HttpState实例中并且可调用方法setCredentials(AuthScopeauthscope, Credentials cred)和getCredentials(AuthScope authscope)

中小公司员工统一用户认证方案(视频版)

QIANYAN/前言 前段时间发了一篇:中小公司统一用户认证方案 的技术贴,也是一篇实用性文章,很多程序猿都在关注,不少童鞋在后台询问后续内容是否出来.呼声很高的视频版终于出来啦,希望对大家有所帮助哦. SHIPIN / 视频 视频链接:http://pan.baidu.com/s/1bIuuku 密码:ivdl (请在wifi环境下观看哦) NEIRONG /内容 分享的主题:OpenLDAP 企业应用 分享的内容: 公司为什么需要统一用户认证? 解决用户统一认证都要干哪些事? LDAP 都存

Vsftp的PASV mode(被动模式传送)和Port模式及 Linux下VsFTP配置全方案

什么叫做PASV mode(被动模式传送)?他是如何工作的? FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接.FTP服务程序一般会支持两种不同的模式,一种是Port模式,一种是Passive模式(Pasv Mode),我先说说这两种不同模式连接方式的分别. 先假设客户端为C,服务端为S. Port模式: 当客户端C向服务端S连接后,使用的是Port模式,那么客户端C会发送一条命令告诉服务端S(客户端C在本地打开了一个端口N在等着你进行数据连接),当服务端S

[Bug]IE11下,forms认证,出现无法保存cookie的问题

目录 ie11 解决方案 ie11 在ie11下,访问服务器上的网站地址,莫名其妙的多出一串东西,这一串字符串是由于客户端禁用cookie造成sessionid无法写入cookie,所以就拼在url上面了: http://192.168.80.90:8003/(F(f7MHPrEbtCN867LFxf9VSLQnzHRsU41jVEYkBT6WTAbyiBlFGeJrLDnvj7cI4M8fEUPPwoqLANdfLxb7ydCt6vOPDxh9rP2ssg9L7-xvSpaEV2pE6eIW9

OAuth2 RFC 6749 规范提供的四种基本认证方案

OAuth2 RFC 6749 规范提供了四种基本认证方案,以下针对这四种认证方案以及它们在本实现中的使用方式进行分别说面. 第一种认证方式: Authorization Code Grant (授权码认证) 授权码通过使用授权服务器做为客户端与资源所有者的中介而获得.客户端不是直接从资源所有者请求授权,而是引导资源所有者至授权服务器(由在RFC2616中定义的用户代理),授权服务器之后引导资源所有者带着授权码回到客户端. 在引导资源所有者携带授权码返回客户端前,授权服务器会鉴定资源所有者身份并