jwt认证
欢迎转载,请支持原创,保留原文链接:blog.ilibrary.me
K8S不同services直接鉴权以前用secret key, 现在想换成基于x509证书的。
JWT
JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案.
包含3部分:
- Header
{ "alg": "HS256",// 签名算法 "typ": "JWT" // token的类型,JWT token统一写为JWT }
- 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 }
-
Signature Signature 部分是对前两部分的签名,防止数据篡改。
首先,需要指定一个密钥(secret)。这个密钥只有服务器才知道,不能泄露给用户。然后,使用 Header 里面指定的签名算法(默认是 HMAC SHA256),按照下面的公式产生签名。
- Base64URL
可以用Base64URL打包JWT,这样就可以把token放url末尾了。Base64URL是base64的变体,主要是在base64的基础上把url的一些特殊字符做处理。
JWT和X.509
- JWT是一种基于数字证书的认证方法.
- JWT是 JSON Web Tokens的缩写。
- X.509是密码学里公钥证书的格式标准