新聞中心
隨著移動端和web端的普及,越來越多的企業(yè)將重點轉向了如何設計系統(tǒng)的身份認證。使用傳統(tǒng)的賬號密碼形式,企業(yè)和應用都無法拒絕盜用和Hijacking的攻擊,解決賬號安全問題就成為一個重要而又急迫的工作。JWT,即“JSON Web token”,是一個基于JSON數(shù)據(jù)協(xié)議來認證用戶身份的輕量級標準。它完全可以用來代替?zhèn)鹘y(tǒng)的賬號密碼機制,極大地簡化了安全認證。接下來將討論如何基于Redis集群來構建一個JWT認證系統(tǒng)。

1. 設計集群節(jié)點架構。建議采用Redis Sentinel來監(jiān)控Redis集群的可用狀態(tài),采用Lead-Follower的方式保存數(shù)據(jù),使每個節(jié)點都保持高可用狀態(tài)。
2. 編寫認證相關邏輯代碼。在用戶發(fā)出登錄請求時,基于Redis集群判定用戶是否有權限登錄,如果認證成功,則生成一個jwt token存入Redis中,并以http header的方式返回給用戶。
“`java
//計算JWT的方法
string generateJwtToken(String userName, Long expireTime){
//按時標生成一個JWT token
Long now = System.currentTimeMillis();
//jwt的頭部
Map header = new HashMap();
//可以指定加密的算法
header.put(“alg”, “HS256”);
header.put(“type”, “JWT”);
//負載內容
Map payload = new HashMap();
//用戶名
payload.put(“userName”, userName);
//過期時間
payload.put(“expireTime”, expireTime);
//生成JWT
return Jwts.builder()
.setHeader(header)
.setSubject(“Hello”)
.setIssuedAt(new Date(now))
.setExpiration(new Date(now + expireTime))
.clm(“userName”, userName)
.signWith(SignatureAlgorithm.HS256, SECRET)
.compact();
}
3. 遠程持久化JWT token。當用戶成功登錄后,將JWT token存入redis集群,以便隨時通過客戶端發(fā)起驗證請求,校驗用戶身份。
4. 編寫用戶鑒權服務。在收到用戶的請求后,首先從收到的http header中提取JWT token,然后從redis中獲取JWT token并判斷是否過期,如果未過期則表示用戶身份已被確認,否則返回重新登錄的通知。
```java
public boolean verifyJwtToken(String jwtToken){
//從redis中獲取JWT token
String tokenValue = redisCluster.get(jwtToken);
if(tokenValue == null){
return false
}
//jwt token校驗
Clms clms = Jwts.parser().setSigningKey(SECRET)
.parseClmsJws(jwtToken).getBody();
//判斷是否過期
Date expireTime = clms.getExpiration();
if( expireTime.getTime()
return false;
}
return true;
}
本文討論了如何基于Redis集群來構建一個JWT認證系統(tǒng),首先我們采用Redis Sentinel來監(jiān)控Redis集群的可用狀態(tài),然后設計一套JWT認證的邏輯代碼,將JWT token存入redis集群并提供用戶鑒權服務?;赗edis集群的JWT認證系統(tǒng)不但可以提高應用的安全性,同時也極大地簡化了安全認證。
成都創(chuàng)新互聯(lián)建站主營:成都網(wǎng)站建設、網(wǎng)站維護、網(wǎng)站改版的網(wǎng)站建設公司,提供成都網(wǎng)站制作、成都網(wǎng)站建設、成都網(wǎng)站推廣、成都網(wǎng)站優(yōu)化seo、響應式移動網(wǎng)站開發(fā)制作等網(wǎng)站服務。
網(wǎng)頁標題:基于Redis集群的構建JWT認證系統(tǒng)(redis集群jwt)
轉載來源:http://www.5511xx.com/article/djgiggd.html


咨詢
建站咨詢
