日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java框架 token_Java安全框架(三):JWT(Json Web Token)

發布時間:2023/12/20 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java框架 token_Java安全框架(三):JWT(Json Web Token) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、概述

1、什么是無狀態?

簡單講,服務里面一定要存一個session那就是有狀態,不需要存就是無狀態

2、服務架構演進

單體架構(有狀態)

缺陷:Session在服務器中,如果服務器有多個,由于服務器輪詢,會造成頻繁跳轉登錄;服務器開銷大

分布式架構:Redis集中管理session(有狀態)

缺陷:服務端要一直維持session狀態,redis掛掉了,所有用戶要重新登錄;服務器開銷大

微服務架構:JWT(無狀態)

優勢:登陸后返回jwt,以后每次用戶會攜帶jwt發送請求,服務端不需要再維持session狀態

二、JWT基礎知識

1、什么是JWT

通過json的形式作為web應用中的令牌,用于各方之間安全的信息傳輸。(json web token)

優勢

2、JWT結構

(1)結構

標頭(Header).有效載荷(Payload).簽名(Signature)

Header

{

“alg”: “HS256”, // 簽名算法

“typ”: “JWT” // 令牌類型

}

// 對上面做Base64編碼

base64UrlEncode(header)

Payload(有效負荷中不要放敏感信息,因為Base64編碼是可以解碼的)

{

“sub”: “1234567890”,

“name”: “tom”,

“admin”: true

}

// 對上面做Base64編碼

base64UrlEncode(payload)

Signature(防止Header和Payload被篡改)

HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload), “secret”);

(2)解密

(3)驗證

將傳入的token的第1、2部分加上secret進行加密,如果跟第3部分相同,則驗證通過。

HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload), “secret”);

3、JWT認證流程

三、JWT簡單使用

1、引入依賴

com.auth0

java-jwt

3.4.0

2、生成token

Calendar instance = Calendar.getInstance();

instance.add(Calendar.DATE, 6);

// 生成令牌

String token = JWT.create()

.withClaim("username", "張三") // 自定義用戶名

.withExpiresAt(instance.getTime()) // 設置過期時間

.sign(Algorithm.HMAC256("securityJWT")); // 設置簽名

// 輸出令牌

System.out.println(token);

生成的token

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1OTgzNDM5NDAsInVzZXJuYW1lIjoi5byg5LiJIn0.2mfqA8AMn9rK-OpKDYEbOO8hWb5DSdVOmL0a_mxq5CE

3、根據令牌和簽名解析數據

// 創建驗證對象

JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("securityJWT")).build();

DecodedJWT decodedJWT = jwtVerifier.verify(“eyJ0eXAiOiJKV1Q...jkfSgrqD7BtZg7GeA");

System.out.println("用戶名:" + decodedJWT.getClaim("username").asString());

System.out.println("過期時間:" + decodedJWT.getExpiresAt());

四、單點登錄

1、什么是單點登錄?

我們在某寶中,可以看到,里面有很多別的應用,而我們想要用,直接點就行了,并不需要再次登錄,這就是單點登錄。

2、單點登陸的原理

多個應用間是通過token進行傳輸,當你登錄某寶之后,會產生一個token,在你后續訪問過程中都會攜帶這個token,而當你點擊其他應用時,也會把token傳過去,應用會對token進行解密驗證,驗證成功,即可訪問。

總結

以上是生活随笔為你收集整理的java框架 token_Java安全框架(三):JWT(Json Web Token)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。