在微服务系统中有多种方案来保持用户的状态及安全认证,比如session方案,token方案,本文讨论比较主流的JWT方案的使用示例。
基本的设计方案如下:
JWT字符串由3部分组成,分别是Header、Payload和Signature,由两个句点符合分割,可以到https://jwt.io网站上进行在线解析。字符串样例如下:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJleHAiOjE2Nzc5MDc1NjYsInVzZXJJZCI6IjU0MDg2NTM3LTdlYjItNGUyMC1hMWUxLTJlNjc4NGUxNDEyNSIsImVtYWlsIjoidGVzdEBmcmVlY29kZS5jb20ifQ.htjMGp8KBpuarxjCEHNle33btu6jEKqGTfL1YRX9xnmd669NExZDhaUO--8Uv22h4sQQT3jjrBc4p_YOWhfK3Q
这里生成JWT的库主要使用java-jwt,其pom文件引用如下:
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.6.0</version>
</dependency>
使用HMAC512算法,定义了一个名为userId的Claimÿ