產生摘要挑戰回應
從伺服器接收挑戰之後,用戶端會呼叫 InitializeSecurityContext (Digest) 函式來建立摘要式挑戰回應。 此函式會使用來自挑戰的要求資源和數據相關信息來產生 MD5 哈希指紋,並輸出代表部分安全性內容的安全性令牌。 若要完成驗證,客戶端必須將令牌傳回給發出挑戰的伺服器。
下表描述 InitializeSecurityContext (Digest) 函式的參數,以及建構 Digest 挑戰回應時要提供的值。
參數 | 描述 |
---|---|
fContextReq |
用戶端要求的安全性內容屬性。 如需詳細資訊,請參閱摘要式挑戰響應內容需求。 |
pszTargetName |
HTTP:指定目標 URL 的 Null 終止字串。 SASL:指定 DNS/SPN 目標的 Null 終止字串。 |
pInput |
包含摘要 SSP 所需資訊的緩衝區。 如需詳細資訊,請參閱 摘要式挑戰回應的輸入緩衝區。 |
pfContextAttr |
接收傳回的安全性內容所支援的屬性。 如需詳細資訊,請參閱摘要式挑戰響應內容需求。 |
pOutput |
接收要傳回伺服器之安全性令牌之SECBUFFER_TOKEN型別緩衝區的位址。 |
摘要式挑戰回應內容需求
內容需求是決定:
- Microsoft摘要函式是否為 SASL 機制或 HTTP 驗證通訊協定。
- 用戶端和伺服器所共用的安全性內容所支援的保護品質。
根據預設,Microsoft摘要函式作為 SASL 機制。
內容需求會指定為傳遞至 InitializeSecurityContext 函式之 fContextReq 參數的旗標。 旗標會控制挑戰回應中的 qop 指示詞,以影響安全性內容的保護品質。
根據預設,qop 指示詞會設定為 「auth」。 若要產生將 qop 設定為 “auth-int” 的挑戰回應,必須發生下列情況:
摘要挑戰必須已將 qop 指示詞設定為 「auth-int」。。
用戶端必須指定下列一或多個旗標:
- ISC_REQ_INTEGRITY
- ISC_REQ_REPLAY_DETECT
- ISC_REQ_SEQUENCE_DETECT
僅限 SASL:藉由指定 ISC_REQ_CONFIDENTIALITY 旗標,產生 qop 指示詞設定為 “auth-conf” 的挑戰回應。 由於此旗標對 HTTP 驗證無效,因此無法搭配 ISC_REQ_HTTP 旗標使用。
驗證保護品質
客戶端必須檢查 InitializeSecurityContext 函式的 pfContextAttr 參數中傳回的安全性內容屬性旗標。 只有當旗標所指出的保護品質足以供其用途使用時,用戶端才會將挑戰回應傳送至伺服器。 相關旗標可以是下列任何組合:
- ISC_RET_INTEGRITY
- ISC_RET_REPLAY_DETECT
- ISC_RET_SEQUENCE_DETECT
- ISC_RET_CONFIDENTIALITY (僅限 SASL 內容)
如需 qop 指示詞的詳細資訊,請參閱 保護和加密品質。
如需挑戰回應指示詞的詳細資訊,請參閱 摘要式挑戰回應的內容。