美文网首页
2018-06-12 - 草稿

2018-06-12 - 草稿

作者: 进击云原生 | 来源:发表于2018-06-12 16:49 被阅读5次

    JSON web Token,简称JWT,本质是一个token,是一种紧凑的URL安全方法,用于在网络通信的双方之间传递。一般放在HTTP的headers 参数里面的authorization里面,值的前面加Bearer关键字和空格。除此之外,也可以在url和request body中传递。
    JWT有三部分依顺序用点号(".")链接而成:1.header,2.payload,3.signature。
    header里面说明类型和使用的算法,比如:

    {
      "alg": "HS256",
      "typ": "JWT"
    }
    

    说明是JWT(JSON web token)类型,使用了HMAC SHA 算法。这个值在链接之前需要用base64UrlEncoding加密。
    payload是一组claim的值。claim包含claim name和claim value。前者是string类型,后者可以是任意的json对象。claims有三种类型:reserved claim,public claim 和 private claim。reserved claim是预先定义好的,不强制使用但推荐使用的一组claim,比如 iss(issuer 发布者), exp(expiration time 失效时间),sub(subject 主题),aud(audience 听众) 等。用于说明一些有用的交互信息。
    public claim,是指由JTWs所定义的,但是为了防止和其他名字发生重名的claims。它们需要定义成IANA JSON web token registery 里面 或者定义成一个URI,这个URI包含一组固定的命名。
    private claim 是客户自己创建的用于彼此分享信息。
    举个例子:
    {
    "sub": "1234567890",
    "name": "John Doe",
    "admin": true
    }
    signature 就是用点号将header和payload联系起来,然后用header里面指定的加密方法进行加密后的字符串。
    HMACSHA256(
    base64UrlEncode(header) + "." +
    base64UrlEncode(payload),
    secret)

    应用场景:
    1.浏览器将用户名和密码以post请求的方式发送给服务器。
    2.服务器接受后验证通过,用一个密钥生成一个JWT。
    3.服务器将这个生成的JWT返回给浏览器。
    4.浏览器将JWT包含在authorization header里面,然后发送请求给服务器。
    5.服务器可以在JWT中提取用户相关信息。进行验证。
    6.服务器验证完成后,发送响应结果给浏览器。

    OAuth2.0 是一个RFC协议,可以参考RFC6749,它定义了一个安全认证框架。
    简单的说包含authentication 和authorization。 而openID connect 是基于这个框架上
    的认证实现。上面说的JWT,也就是JSON web token, 在里面得到了应用,可以解决
    跨域的问题,详细的资料,需要自己专研。

    八幅漫画理解使用JSON Web Token设计单点登录系统

    JSON Web Token - 在Web应用间安全地传递信息

    相关文章

      网友评论

          本文标题:2018-06-12 - 草稿

          本文链接:https://www.haomeiwen.com/subject/uzlreftx.html