zoukankan      html  css  js  c++  java
  • JWT

      (JSON Web Token)JWT,本质是一个token。

    • 是一种紧凑的URL安全方法,用于在网络通信的双方之间传递。
    • 一般放在HTTP的headers 参数里面的authorization里面,值的前面加Bearer关键字和空格。
    • 主要用于身份认证和信息交换。
    • 由三部分组成: 第一部分我们称它为头部(header),第二部分我们称其为载荷(payload,类似于飞机上承载的物品),第三部分是签证(signature)。

    header

    jwt的头部承载两部分信息:

    • 声明类型,这里是jwt
    • 声明加密的算法 通常直接使用 HMAC SHA256

    playload

    载荷就是存放有效信息的地方。这个名字像是特指飞机上承载的货品,这些有效信息包含三个部分

    • 标准中注册的声明
    • 公共的声明
    • 私有的声明

    标准中注册的声明 (建议但不强制使用) :

    • iss: jwt签发者
    • sub: jwt所面向的用户
    • aud: 接收jwt的一方
    • exp: jwt的过期时间,这个过期时间必须要大于签发时间
    • nbf: 定义在什么时间之前,该jwt都是不可用的.
    • iat: jwt的签发时间
    • jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。

    公共的声明
    公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.但不建议添加敏感信息,因为该部分在客户端可解密.

    私有的声明
    私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,因为base64是对称解密的,意味着该部分信息可以归类为明文信息。

    signature

    jwt的第三部分是一个签证信息,这个签证信息由三部分组成:

    • header (base64后的)
    • payload (base64后的)
    • secret

    这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。

     
    流程:

         1. 用户导航到登录页,输入用户名和密码,进行登录
         2. 服务器对登录用户进行认证,如果认证通过,根据用户的信息和JWT的生成规则生成JWT Token
         3. 服务器将该Token字符串返回
         4. 客户端得到Token信息,将Token存储在localStorage、sessionStorage或cookie等存储形式中。
         5. 当用户请求服务器API时,在请求的Header中加入 Authorization:Token。
         6. 服务端对此Token进行校验,如果合法就解析其中内容,根据其拥有的权限和自己的业务逻辑给出响应结果,如果不通过,返回HTTP 401。
         7. 用户进入系统,获得请求资源

          JWT本身的实现非常简单,虽然很高效的完成了用户认证,但网站的安全性问题是一个非常重要且关键的问题,通过上面的JWT生成过程我们可以很清楚的知道,JWT本身没有做加密处理,都是通过Base64进行编码后方便通过HTTP传输而已,Header和Payload信息都是可以通过Base64解码进行查看的。为保证用户密、密码验证过程的安全性,敏感信息需要在网络中传输,Token信息也会在Request请求信息中看到,因此,这个过程建议将网站进行SSL加密传输,采用HTTPS协议,以确保通道的安全性。在Payload中尽量少带敏感性信息,只带ID等无关网站安全的信息。

  • 相关阅读:
    ssm依赖
    NSNotificationCenter详解
    Objective-C语法之代码块(block)的使用
    IOS UI UITableView
    IOS 多线程(4) --线程通讯
    IOS 多线程(3) --线程安全
    IOS 多线程(2) --NSThread
    IOS 多线程(1) --基础知识
    IOS UI TextFiled常用总结
    IOS UI TabBar标签栏的使用
  • 原文地址:https://www.cnblogs.com/Jack666/p/9861484.html
Copyright © 2011-2022 走看看