目錄
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地埋燈的應用範圍比較廣泛,主要埋於地下,用於清洗建築物立面或打亮樹木,常見的應用區域有商業辦公樓體 城市綠化帶 園林 公園 景點 商業街區 ...