• JSON Web Tokens


    JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

    JWT.IO allows you to decode , verify and generate JWT

    http://jwt.io

    使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

    • 客户端使用用户名跟密码请求登录
    • 服务端收到请求,去验证用户名与密码
    • 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
    • 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
    • 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
    • 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

    JWT标准的Token分为三部分:

    header.payload.signature

    Header头部,使用Base64编码。

    {
    "typ":"JWT", # Token 类型
    "alg":"HS512" # 加密的算法
    }

    Payload 载荷,Token的具体内容,使用Base64编码

    {
    "iss" : "http://example.org",   #非必须。issuer 请求实体,可以是发起请求的用户的信息,也可是jwt的签发者。
    "iat" : 1356999524,                #非必须。issued at 发行时间。 token创建时间,unix时间戳格式
    "exp" : "1548333419",            #非必须。过期时间,expire 指定token的生命周期。unix时间戳格式
    "aud" : "http://example.com",   #非必须。Audience,观众,接收该JWT的一方。
    "sub" : "jrocket@example.com",  #非必须。Subject 主题,该JWT所面向的用户
    "nbf" : 1357000000,   # 非必须。not before。如果当前时间在nbf里的时间之前,则Token不被接受;一般都会留一些余地,比如几分钟。
    "jti" : '222we',     # 非必须。JWT ID。针对当前token的唯一标识
    
    "username":"admin",  # 自定义字段
    "email":"demo@demo.com",  #自定义字段
    "Role" : ["Manager", "Project Administrator"] # 自定义字段
    }

    signature签证,由三部分组成。

    HMACSHA512( base64UrlEncode(header)+"."+base64UrlEncode(payload),secret )

    前两个使用.连接,然后使用secret和Header中的加密算法进行加密,将加密结果作为signature连接在最后。

    Java JWT: JSON Web Token for Java and Android, created by Stormpath's CTO ,Les Hazlewood and is now maintaioned by a community of contributors.sss

    Github: http://github.com/jwtk/jjwt

    加解密的key是通过固定字符串转换而生成的,subject为用户信息的json字符串;ttlMillis是指token的有效期,时间较短,需要定时更新。

    这里要介绍的token刷新方式,是在生成token的同时生成一个有效期较长的refreshToken,后续由客户端定时根据refreshToken来获取最新的token。浏览器和服务端之间建立sse(server send event)请求,来实现刷新。 github地址:https://github.com/ahmu/spring-authorization-demo

    参考文章:

    • jwt官网:https://jwt.io
    • jjwt项目:https//github.com/jwtk/jjwt
    • Introduction to JSON Web Tokens: https://jwt.io/introduction/
    • How to Create and verify JWTs in Java: https://stormpath.com/blog/jwt-java-create-verify
    • http://blog.csdn.net/zsg88/article/details/76796527
    • http://www.cnblogs.com/anny0404/p/5318692.html
    • http://www.cnblogs.com/FightingMan/p/6203429.html

    转载于:https://my.oschina.net/sasky/blog/1514319

  • 相关阅读:
    hdu 1045 Fire Net
    hdu 1044 Collect More Jewels
    hdu 1043 Eight
    hdu 1042 N!
    hdu 1041 Computer Transformation
    hdu 1040 As Easy As A+B
    CI在ngnix的配置
    angularjs表单验证checkbox
    chrome浏览器跨域设置
    angularjs向后台传参,后台收不到数据
  • 原文地址:https://www.cnblogs.com/twodog/p/12139600.html
Copyright © 2020-2023  润新知