JsonWebToken身份认证-创新互联
用户身份认证一般有5种方式
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、雅安服务器托管、营销软件、网站建设、新建网站维护、网站推广。HTTP Basic authentication
在发送请求时在HTTP头中加入authentication
字段,将用Base64
编码的用户名和密码作为值,每次发送请求的时候都要发送用户名和密码,实现比较简单。Cookies
向后台发送用户名和密码,在用户名和密码通过验证后,保存返回的Cookie
作为用户已经登录的凭证,每次请求时附带这个Cookie
Signatures
用户拿到服务器给的私钥,在发送请求前,将整个请求使用私钥来加密,发送的将是一串加密信息,此方式只适用于APIOne-Time Passwords
一次一密,每次登录时使用不同的密码,一般由服务端通过邮件将密码发给用户,这种登录方式比较繁琐JSON Web Token
用户发送按照约定,向服务端发送Header
、Payload
和Signature
,并包含认证信息(密码),验证通过后服务端返回一个token
,之后用户使用该token
作为登录凭证,适合于移动端和api
因为前后端分离的缘故,现在的后台多数只提供数据部分,一般使用JSON
格式,所以JSON Web Token
是比较流行的认证方式。
JWT
的认证方式相比其他的认证方式有一下优点:
信息可用HMAC或RSA加密,信息安全性较高
生成的密文短,密文可以包含所有用户信息,认证过期时间或用户权限等自定义信息
适合用于手机应用和单页面应用的身份认证
使用灵活,一旦取得了
JWT
,可以通过POST方式或添加入HTTP头中发送
JWT结构
JWT
包含3个部分
Header (头部)
Payload (负载)
Signature (签名)
负载部分就是具体的认证信息,通过修改这部分的内容来控制认证信息如用户权限等。除了一些保留字段exp
(过期时间)、aud
、iss
等外,使用方法跟普通Json一样。
Signature
签名,也就是密钥,用来保证密文的安全强度
以上3部分都经过Base64Url处理后用下载地址 .
分隔再使用HMAC SHA256
或RSA
加密为一段字符串
JWT使用流程
jwt diagram
客户端POST用户名和密码到服务端,若对安全要求较高可以是加密后的用户名或密码,服务端把拿到的用户名和密码与数据库中的对比,若相同则按照上面的流程生成JWT
,然后返回客户端。在此之后客户端的所有请求,可以在Authorization HTTP头或POST数据中附带得到的JWT
。服务端验证JWT
并解析出Payload下载地址 部分,以此来判断用户的权限。
JWT
的使用方法很简单,就拿node.js的包node-jsonwebtoken
来说加密和验证就两个函数jwt.sign
,jwt.verify
并且jwt.io中提供了很多语言的JWT
包。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前文章:JsonWebToken身份认证-创新互联
链接URL:http://ybzwz.com/article/ddicoe.html