複製鏈接
請複製以下鏈接發送給好友

SPNEGO

鎖定
SPNEGO(SPNEGO: Simple and Protected GSS-API Negotiation)是微軟提供的一種使用GSS-API認證機制的安全協議,用於使Webserver共享Windows Credentials,它擴展了Kerberos(一種網絡認證協議)。
外文名
SPNEGO
類    型
安全協議

SPNEGO定義:

SPNEGO(SPNEGO: Simple and Protected GSS-API Negotiation)是微軟提供的一種使用GSS-API認證機制的安全協議,用於使Webserver共享Windows Credentials,它擴展了Kerberos(一種網絡認證協議)。

SPNEGO簡述

SPNEGO是一種使用GSS-API(通用安全服務應用接口)認證機制的安全協議。GSS-API是一個同時包含應用程序接口和接入認證方法學的文字處理函數集。
SPNEGO協議允許客户機和web服務器協定一個它們之間的通訊協議。此協議也定義了一種客户機發送可驗證的證明數據給web服務器的方式。
如果web服務器可以解析客户機發來的SPNEGOtoken,那麼這個token就用來實現安全的單點登錄(securesingle sing on)。因此用户的身份就用一種安全方式協商給web服務器。這就是用户經常在訪問IIS時體驗的。需要注意的是SPNEGO支持基於Kerberos或NTLMcredentials 的Active Directory credentials。IBMTAI方案只支持基於Kerberos credentials的。TAM(TivoliAccess Manager)支持NTLM和Kerberos兩種。
SPNEGO協議通過使用接口和接入認證產生了一個應用協議和一個認證協議相互作用的一張簡表。在這種模式下,應用協議主要負責運送認證協議生成的不相關聯和不透明的包。這些由GSS規格提及作為安全令牌的包執行認證過程。應用協議對於安全令牌的內容是不可見的;它只是負責傳送這些安全令牌。
因為可以有多個可並存的GSS認證協議的存在,決定使用哪個協議就變得尤為重要。最初的GSS設計了一個靜態的,在應用程序與GSS實施間編譯時的綁定。SPNEGO 填充了這種介紹一個可並存的GSS套件給其他GSS機制的需要。更多近來的實踐是提供超過一個認證的機制---甚至只是一個單獨的應用協議。它安全的在幾個認證機制間協商,選擇一個用來滿足應用協議認證的需要。
微軟對SPNEGO協議已經做出了一些改進:包括在早期實施時的某些錯誤,以及與某些非GSS方案的優化。這些改進構成了這一規範的基礎。

SPNEGO接入與認證過程

首先,應用協議在客户端調用認證協議。客户端部分的認證協議建立一個安全令牌並將令牌返回給呼叫的應用協議。接着應用協議傳送安全令牌到其連接在嵌入有應用協議的服務器端。在服務器端,服務器的應用協議提取出安全令牌並提供給服務器端的認證協議。服務器端的認證協議開始處理這個安全令牌,隨後可能會產生一個響應,又或者由它來決定此次認證已經完成。如果又有一個安全令牌產生,應用協議必須把它送回給客户端使認證過程能繼續下去。
安全令牌的交換會一直進行下去,直到一邊決定認證失敗或兩邊都認為認證成功。如果認證失敗,應用協議會斷開連接並顯示出錯誤訊息。如果認證成功,應用協議能信任申請方的身份直到支持的應用協議能夠完成為止。判定成功或失敗的責任並不在應用協議,而在抽象的安全協議,則大大簡化了應用協議的任務。當認證完成後,特定會話的安全服務就會可用。應用協議接着就可以調用認證協議來籤認或加密由一部分應用協議發出的消息。在大致相同的方式下,特定會話安全服務的具體操作被執行,其中應用協議可以表明哪部分消息已經加密,且應用協議必須含有每條消息的安全令牌。被籤認或加密的消息,應用程序能夠獲得消息的保密性和完整性,並且能發現消息丟失,異常投遞和重新傳送。