認證和授權 核心要點解析

2021-10-04 19:12:02 字數 2969 閱讀 7971

目錄

1.認證和授權?

2.cookie和session?

3.token?

4.sso與oauth2.0的區別

5.springsecurity

6.apacheshiro

使用者身份(authentication)和使用者許可權(authorization)的區別。

都是用來跟蹤瀏覽器使用者身份的會話方式。cookie在客戶端儲存使用者資訊,會話cookie自動過期setmaxage設定會話資料存在時間,大小數量和安全問題20個4k以內。session預設30分鐘有效,setmaxinactiveinterval設定或者部署描述符配置有效期。

通過sessionid實現特定使用者登入,一般存放在redis中。使用者登入系統後伺服器生產並返回給客戶端帶有sessionid的cookies,然後使用者在此向伺服器發起請求的時候就會帶著這個cookies(sessionid),這樣後端就知道身份了。

(springboot的demo跨程式管理)

由來:會話技術。例如**的購物系統,使用者將購買的商品資訊儲存到哪  裡?因為http協議是無 狀態的,也就是說每個客戶訪問伺服器端資源時,伺服器並  不知道該客戶端是誰,所以需要會話技 術識別客戶端的狀態。會話技術是幫助伺服器  記住客戶端狀態(區分客戶端)

傳送cookie

cookie cookie = new cookie(name,value)

cookie.setmaxage(秒)

cookie.setpath()

response.addcookie(cookie)

獲得cookie

cookie cookies = request.getcookies();

cookie.getname();

cookie.getvalue();

session技術:存到伺服器端 借助cookie儲存jsessionid

1)建立cookie:

cookie cookie = new cookie(string cookiename,string cookievalue);

注意:cookie中不能儲存中文

cookie.setmaxage(int seconds); ---時間秒

注意:如果不設定持久化時間,cookie會儲存在瀏覽器的記憶體中瀏覽器關閉cookie資訊銷毀

如果設定持久化時間,cookie資訊會被持久化到瀏覽器的磁碟檔案裡

3)設定cookie的攜帶路徑:

cookie.setpath(string path);

注意:不設定,那麼該cookie資訊會在訪問產生該cookie的web資源所在的路徑都攜帶cookie資訊

eg:cookie.setpath("/web16"); 訪問web16應用中的任何資源都攜帶cookie

cookie.setpath("/web16/cookieservlet"); 訪問web16中的cookieservlet才攜帶cookie資訊

4)向客戶端傳送cookie:

response.addcookie(cookie cookie);

2.伺服器端怎麼接受客戶端攜帶的cookie

cookie資訊是以請求頭的方式傳送到伺服器端的:

1)通過request獲得所有的cookie:

cookie cookies = request.getcookies();

2)遍歷cookie陣列,通過cookie的名稱獲得我們想要的cookie

for(cookie cookie : cookies)

}1.獲得session物件

獲得當前會話的session物件,如果伺服器端沒有該會話的session物件會建立乙個新的session返回

如果已經有了屬於該會話的session直接將已有的session返回,根據jsessionid判斷該

2.怎樣向session中訪問資料(session也是乙個域物件)

session也是儲存資料的區域物件,所以session物件也具有如下三個方法:

session.setattribute(string name,object obj);

session.getattribute(string name);

session.removeattribute(string name);

csrf跨站請求偽造。就是別人通過cookie拿到你的sessionid就可以代替你的身份訪問資源。

典型csrf攻擊流程:

那麼,有沒有不用存放session就能認證使用者身份呢?token上場表演。對資料使用演算法+金鑰進行簽名,成為無法偽造的token。

基於token的身份驗證jwt:

header:jwt的元資料。定義了生成簽名的演算法以及token的型別。

payload:負載、用來存放實際需要傳遞的資料。

signature:伺服器通過payload/header和乙個金鑰(secret)使用header 中簽名演算法(預設是hmacsha256)生成。

oauth2標準授權協議,用來授權第三方應用獲取某些許可權。sso(single sign on)單點登入 ,解決多個相關的子系統登入乙個別的也可以訪問。

認證、授權、會話管理和加密。四大基石!

subject :主體 -------securitymanager:管家------------realm:安全資料來源

微服務 目的 特點和核心要點

這章具體介紹微服務。1.微服務的目的 2.微服務的特點 3.微服務的核心要點 以拆分和服務化為基礎,將海量使用者產生的大規模的訪問流量進行分解,採用分而治之的方法,達成使用者需要的功能指標,並同時滿足使用者對高可用 高效能 可伸縮 可擴充套件和安全性的非功能質量的要求。1.微服務把每個職責單一的功能...

敏捷框架Scrum的核心要點(「3355」)

scrum是敏捷實踐中最知名的一套框架。對於初學 scrum 的同學,領會精髓需要實踐和時間,但借助對其中最成型的部分的了解,能最快速的一窺其概貌。雖不精確,但有助於建立巨集觀的體感。scrum 的核心可以簡單歸納為 3355 scrum的三個核心角色分別是 scrum master product...

樓體亮化工程的核心要點

實際上能夠如期做好亮化效果 確保順利交付絕非易事。十餘年來,良境 總結了以下經常被忽視的樓體戶外照明亮化工程的四大關鍵點。1 樓體亮化工程之led地埋燈 led地埋燈的應用範圍比較廣泛,主要埋於地下,用於清洗建築物立面或打亮樹木,常見的應用區域有商業辦公樓體 城市綠化帶 園林 公園 景點 商業街區 ...