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

1. 設(shè)計集群節(jié)點架構(gòu)。建議采用Redis Sentinel來監(jiān)控Redis集群的可用狀態(tài),采用Lead-Follower的方式保存數(shù)據(jù),使每個節(jié)點都保持高可用狀態(tài)。
2. 編寫認(rèn)證相關(guān)邏輯代碼。在用戶發(fā)出登錄請求時,基于Redis集群判定用戶是否有權(quán)限登錄,如果認(rèn)證成功,則生成一個jwt token存入Redis中,并以http header的方式返回給用戶。
“`java
//計算JWT的方法
string generateJwtToken(String userName, Long expireTime){
//按時標(biāo)生成一個JWT token
Long now = System.currentTimeMillis();
//jwt的頭部
Map header = new HashMap();
//可以指定加密的算法
header.put(“alg”, “HS256”);
header.put(“type”, “JWT”);
//負(fù)載內(nèi)容
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. 遠(yuǎn)程持久化JWT token。當(dāng)用戶成功登錄后,將JWT token存入redis集群,以便隨時通過客戶端發(fā)起驗證請求,校驗用戶身份。
4. 編寫用戶鑒權(quán)服務(wù)。在收到用戶的請求后,首先從收到的http header中提取JWT token,然后從redis中獲取JWT token并判斷是否過期,如果未過期則表示用戶身份已被確認(rèn),否則返回重新登錄的通知。
```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集群來構(gòu)建一個JWT認(rèn)證系統(tǒng),首先我們采用Redis Sentinel來監(jiān)控Redis集群的可用狀態(tài),然后設(shè)計一套JWT認(rèn)證的邏輯代碼,將JWT token存入redis集群并提供用戶鑒權(quán)服務(wù)?;赗edis集群的JWT認(rèn)證系統(tǒng)不但可以提高應(yīng)用的安全性,同時也極大地簡化了安全認(rèn)證。
成都創(chuàng)新互聯(lián)建站主營:成都網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站改版的網(wǎng)站建設(shè)公司,提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、成都網(wǎng)站推廣、成都網(wǎng)站優(yōu)化seo、響應(yīng)式移動網(wǎng)站開發(fā)制作等網(wǎng)站服務(wù)。
分享題目:基于Redis集群的構(gòu)建JWT認(rèn)證系統(tǒng)(redis集群jwt)
文章網(wǎng)址:http://m.5511xx.com/article/djgiggd.html


咨詢
建站咨詢
