欢迎转载,请支持原创,保留原文链接:blog.ilibrary.me

K8S不同services直接鉴权以前用secret key, 现在想换成基于x509证书的。

JWT

JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案.

包含3部分:

  1. Header
    {
     "alg": "HS256",// 签名算法
     "typ": "JWT"   // token的类型,JWT token统一写为JWT
     }
    
  2. Payload Payload 部分也是一个 JSON 对象,用来存放实际需要传递的数据。JWT 规定了7个官方字段,供选用。
     iss (issuer):签发人
     exp (expiration time):过期时间
     sub (subject):主题
     aud (audience):受众
     nbf (Not Before):生效时间
     iat (Issued At):签发时间
     jti (JWT ID):编号
    

    除了官方字段,你还可以在这个部分定义私有字段,下面就是一个例子。

     {
     "sub": "1234567890",
     "name": "John Doe",
     "admin": true
     }
    
  3. Signature Signature 部分是对前两部分的签名,防止数据篡改。

    首先,需要指定一个密钥(secret)。这个密钥只有服务器才知道,不能泄露给用户。然后,使用 Header 里面指定的签名算法(默认是 HMAC SHA256),按照下面的公式产生签名。

  4. Base64URL 可以用Base64URL打包JWT,这样就可以把token放url末尾了。Base64URL是base64的变体,主要是在base64的基础上把url的一些特殊字符做处理。

    JWT和X.509

  5. JWT是一种基于数字证书的认证方法.
  6. JWT是 JSON Web Tokens的缩写。
  7. X.509是密码学里公钥证书的格式标准

refs

  1. JWT Debugger
  2. JSON Web Toke 入门教程, 阮一峰