zoukankan      html  css  js  c++  java
  • JSON Web Tokens介绍

    转载请标明出处:
    http://blog.csdn.net/forezp/article/details/72804324
    本文出自方志朋的博客

    ##什么是JWT

    这篇文章选择性翻译于https://jwt.io/introduction/

    JWT简介

    JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑且字自包含的标准,用于将各方之间的信息地传输为JSON对象。 该信息是通过数字签名进行验证。使用HMAC算法或使用RSA的公钥/私钥对JWT进行签名,所以它的安全性非常高。

    进一步解释它的特点或者概念:
    • 紧凑型(compact):由于是加密后的字符串,JWT数据体积非常的小,可通过 POST参数或HTTP请求头发送。 另外,数据体积小意味着传输速度很快。
    • 自包含(self-contained):JWT包含了用户的所有信心,所以避免了每次查询数据库,降低了服务器的负载。

    JWT应用场景

    一般什么时候应该使用JWT呢?,一般使用在以下场景:

    • 验证:这是使用JWT的最常见的场景。 一旦用户登录,每个后续请求将包括JWT,允许用户访问该令牌允许的路由,服务和资源。 单点登录是一个广泛使用JWT的功能,因为它的开销很小,并且能够在不同的域中轻松使用。
    • 信息交换:JWT是在各方之间安全传输信息的好方法,因为它们可以被签名,例如使用公钥/私钥对. 另外,当使用标题和有效载荷计算签名时,还可以验证内容是否未被篡改。

    JWT结构

    JWT由三个部分组成,分别为“.”分隔,三部分组成如下:

    • Header(头)
    • Payload(有效载荷)
    • Signature(签名)
      因此,JWT通常格式如下:

    xxxxx.yyyyy.zzzzz

    现在,依次对这三个组成部分,分开讲解:

    ####1. Header
    标题通常由两部分组成:令牌的类型,即JWT,以及使用的哈希算法,如HMAC SHA256或RSA。
    比如:

    {
      “alg”:“HS256”,
      “typ”:“JWT”
    }
    

    将header进行Base64 编码作为JWT的第一部分。

    2. Payload

    这是JWT的第二部分,包含了用户的一些信息和Cliam(声明、权利),有三种类型的Cliam:保留,公开和私人声明。
    一个典型的payload应该如下:

    {
      "sub": "1234567890",
      "name": "John Doe",
      "admin": true
    }
    

    将payload进行Base64 编码作为JWT的第二部分。

    3. Signature

    要创建签名部分,需要使用到用Base64编码后header和payloader,以及秘钥,将它们签名,一个典型的格式如下: 
    
    HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
      secret)
    

    JWT是如何使用的

    这里写图片描述

    来说下最常见的应用场景,即认证方面,如图所示。客户端通过用户名密码向服务器请求获取某用户的信息,包括用户一些额外信息,比如权限,这些信息经过加密以JWT形式返回。获取到该JWT的客户端,在以后的每次请求中,都需要携带该JWT,这样做的好处就是每次不需要查询数据库获取该用户的信息,在微服务这样的分布式系统中,可以实现单点登录。


    扫码关注公众号有惊喜

    (转载本站文章请注明作者和出处 方志朋的博客

  • 相关阅读:
    php-浅谈php底层机制
    Apache-三种工作模式(prefork/ worker/Event)
    java入门了解01
    webserivce通过httppost方式调用
    sqlserver 打开 database diagrams 报错:error code 0x54b
    redhat7,redhat6 替换yum
    虚拟机网络配置的一点总结
    搭建sqlserver AlwaysOn
    NSSM-将服务变为window service
    JavaMelody-监控jvm性能
  • 原文地址:https://www.cnblogs.com/forezp/p/9852119.html
Copyright © 2011-2022 走看看