Ⅰ Spring boot-手把手教你使用Token
JWT由三部分組成,由類型和加密演算法的head(頭部),包含公共信息和自定義信息的playboard(負載),以及signature(簽名)組成。
就是頭部信息,這是由base64加密後的密文,base64是一種對稱加密演算法,解密後的json格式如下。頭部信息由type(類型)和 alg(加密演算法)組成。類型就是"JWT",加密演算法一般使用 HMAC SHA256加密演算法。
0 就是負載信息,加密後的json格式如下。負載信息一般由標准申明,公共聲明,私有聲明組成。
iss: jwt簽發者
sub: jwt所面向的用戶
aud: 接收jwt的一方
exp: jwt的過期時間,這個過期時間必須要大於簽發時間
nbf: 定義在什麼時間之前,該jwt都是不可用的.
iat: jwt的簽發時間
jti: jwt的唯一身份標識,主要用來作為一次性token,從而迴避重放攻擊。
公共的聲明和私有的聲明可以添加任何的信息,一般添加用戶的相關信息或其他業務需要的必要信息。但不建議添加敏感信息,因為該部分在客戶端可解密。
第三部分簽名是由base64加密後的頭部信息和負載信息以及secret組成的簽名,簽名演算法是有頭部信息定以的加密演算法,一般是HMAC SHA256。然後頭部,負載,簽名三部分組成了token。
pom.xml引入依賴
新增controller,提供token介面
CallbackService 生成token
返回的示例如下
定義自定義註解,在需要token校驗的方法上加上即可
新增AuthenticationInterceptor對第三方請求進行攔截,實現HandlerInterceptor介面
注冊AuthenticationInterceptor攔截器,對指定請求路徑進行攔截
在此文中,我們大致了解了Token的定義,獲取,校驗等方法。此外,Token 的無狀態,可擴展性,多平台跨域等特性,也讓Token廣泛應用在安全校驗領域中。在接下來的幾篇文章中,我將介紹如何使用Spring AOP進行加密,解密,驗簽等操作。
參考:
https://www.jianshu.com/p/576dbf44b2ae