本節討論使用 NetMsmqBinding時的 WCF 訊息安全性。
備註
閱讀本主題之前,建議您先閱讀 安全性概念。
下圖提供使用 WCF 進行佇列通訊的概念模型。 此圖例和術語可用來說明
運輸安全性概念。
使用 WCF 傳送訊息佇列時,WCF 訊息會作為消息佇列(MSMQ)訊息的內文附加。 當傳輸安全性保護整個 MSMQ 訊息時,訊息 (或 SOAP) 安全性只會保護 MSMQ 訊息的本文。
訊息安全性的主要概念是客戶端會保護接收應用程式(服務)的訊息,與客戶端保護目標佇列訊息的傳輸安全性不同。 因此,MSMQ 在使用訊息安全性保護 WCF 訊息時,不會扮演任何角色。
WCF 訊息安全性會新增安全性標頭至 WCF 訊息,以整合,例如憑證或 Kerberos 通訊協定的現有安全性基礎結構。
訊息認證類型
使用訊息安全性,服務和用戶端可以呈現認證來驗證彼此。 您可以將模式設定 Security 為 Message 或 Both 來選取訊息安全性(也就是說,同時使用傳輸安全性和訊息安全性)。
服務可以使用 Current 屬性來檢查用來驗證客戶端的認證。 這也可用於服務選擇實作的進一步授權檢查。
本節說明不同的認證類型,以及如何搭配佇列使用。
證書
憑證認證類型會使用 X.509 憑證來識別服務和用戶端。
在一般案例中,客戶端和服務是由受信任的證書頒發機構單位簽發有效的憑證。 接著會建立連線,用戶端會使用服務的憑證來驗證服務的有效性,以決定是否可以信任服務。 同樣地,服務會使用用戶端的憑證來驗證用戶端信任。
由於佇列的非連續性本質,客戶端和服務可能無法同時保持在線。 因此,客戶端和服務必須交換頻外憑證。 特別是客戶端,藉由在信任的存放區中保存服務的憑證(可以鏈結至證書頒發機構單位),必須信任它正在與正確的服務通訊。 為了驗證客戶端,服務會使用附加訊息的 X.509 憑證,使其與其存放區中的憑證相符,以驗證客戶端的真實性。 同樣地,憑證必須連結至證書頒發機構。
在執行 Windows 的電腦上,憑證會保留在數種存放區中。 如需不同存放區的詳細資訊,請參閱 證書存儲。
窗戶
Windows 訊息認證類型使用 Kerberos 通訊協定。
Kerberos 通訊協定是一種安全機制,用來驗證網域上的使用者身份,並允許已驗證的使用者在網域上與其他實體建立安全上下文。
使用 Kerberos 通訊協議進行佇列通訊的問題在於,由密鑰分配中心(KDC)發放的票證,包含用戶端身份識別,其存活期限相對較短。 存留期與指出票證有效性的 Kerberos 票證相關聯。 因此,鑒於高延遲,您無法確定令牌對驗證客戶端的服務仍然有效。
請注意,使用此認證類型時,服務必須在SERVICE帳戶下執行。
選擇訊息認證時,預設會使用 Kerberos 通訊協定。
使用者名稱密碼
使用這個屬性,用戶端可以使用訊息安全性標頭中的使用者名稱密碼向伺服器進行驗證。
簽發的憑證
用戶端可以使用安全性令牌服務來發出令牌,然後附加至訊息,讓服務驗證用戶端。
使用傳輸和訊息安全性
使用傳輸安全性和訊息安全性時,用來保護傳輸和SOAP訊息層級之訊息的憑證必須相同。