認證模式之Spnego模式
Spnego模式是一種由微軟提出的使用GSS-API接口的認證模式。它擴展了Kerberos協議,在了解Spnego協議之前必須先了解Kerberos協議,Kerberos協議主要解決身份認證及通信密鑰協商問題。它大致的工作流程例如以下:
①client依據自己username向密鑰分發中心KDC的身份認證服務AS請求TGS票證。
②AS生成一個TGS票證、查詢相應用戶的password,然後通過用戶password將TGS票證加密,響應給client。
③client通過用戶password解密TGS票證。假設password正確就能獲取到TGS票證,然後用TGS票證去票證授予服務TGS請求服務票證。
④TGS將服務票證響應給client。
⑤client使用服務票證去訪問某服務,服務驗證服務票據是否合法。
⑥驗證通過,開始通信。
在了解了Kerberos協議後,我們再來看看Spnego的認證過程是如何的。因為spnego擴展自kerberos協議。認證的核心流程一樣,僅僅是在瀏覽器與webserver之間的http通信過程中嵌入認證流程。例如以下圖:
①client瀏覽器向webserver發送http請求。
②server返回401狀態碼,響應頭部加上 WWW-Authenticate:Negotiate。
③用戶通過瀏覽器輸入username向AS請求TGS票證。
④AS生成TGS票證,然後查詢用戶password並用此password加密
⑤瀏覽器使用用戶password解密出TGS票證,並向TGS服務發起請求。
⑥TGS服務生成服務票證響應給瀏覽器。
⑦瀏覽器將服務票證封裝到SPNEGO token中。並發送給webserver。
⑧server解密出username及服務票證,將票證發往TGS服務驗證。
⑨通過驗證。開始通信。
認證模式之Spnego模式