AcceptSecurityCoNtext 函式 (sspi.h)
AcceptSecurityCoNtext (CredSSP) 函式可讓傳輸應用程式的伺服器元件在伺服器與遠端用戶端之間建立安全性內容。 遠端用戶端會呼叫 InitializeSecurityCoNtext (CredSSP) 函式,以開始建立安全性內容的程式。 伺服器可能需要來自遠端用戶端的一或多個回復權杖,才能完成建立安全性內容。
語法
KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY AcceptSecurityContext(
[in, optional] PCredHandle phCredential,
[in, optional] PCtxtHandle phContext,
[in, optional] PSecBufferDesc pInput,
[in] unsigned long fContextReq,
[in] unsigned long TargetDataRep,
[in, out, optional] PCtxtHandle phNewContext,
[in, out, optional] PSecBufferDesc pOutput,
[out] unsigned long *pfContextAttr,
[out, optional] PTimeStamp ptsExpiry
);
參數
[in, optional] phCredential
伺服器認證的控制碼。 若要擷取此控制碼,伺服器會呼叫 AcquireCredentialsHandle (CredSSP) 函式,並設定SECPKG_CRED_INBOUND或SECPKG_CRED_BOTH旗標。
[in, optional] phContext
CtxtHandle結構的指標。 在第一次呼叫 AcceptSecurityCoNtext (CredSSP) 時,此指標為 Null。 在後續呼叫時, phCoNtext 會指定第一次呼叫在 phNewCoNtext 參數中傳回的部分格式內容。
[in, optional] pInput
用戶端呼叫InitializeSecurityCoNtext (CredSSP ) 所產生的SecBufferDesc結構的指標。 結構包含輸入緩衝區描述元。
第一個緩衝區的類型必須是 SECBUFFER_TOKEN ,並且包含從用戶端收到的安全性權杖。 第二個緩衝區的類型應該是 SECBUFFER_EMPTY。
[in] fContextReq
-Bit 旗標,指定伺服器建立內容所需的屬性。 您可以使用位OR 作業來結合位旗標。 此參數可以是下列一或多個值。
值 | 意義 |
---|---|
|
認證安全性支援提供者 (CredSSP) 將會配置輸出緩衝區。 當您完成使用輸出緩衝區時,請呼叫 FreeCoNtextBuffer 函式來釋放它們。 |
|
安全性內容不會處理格式化訊息。 |
|
允許伺服器模擬用戶端。 忽略此旗標以進行 限制委派。 |
|
發生錯誤時,將會通知遠端合作物件。 |
|
偵測重新執行的封包。 |
|
偵測依序接收的訊息。 |
|
支援資料流程導向連線。 |
如需可能的屬性旗標及其意義,請參閱 內容需求。 用於此參數的旗標前面會加上 ASC_REQ,例如,ASC_REQ_DELEGATE。
用戶端可能不支援所要求的屬性。 如需詳細資訊,請參閱 pfCoNtextAttr 參數。
[in] TargetDataRep
目標上的資料標記法,例如位元組順序。 此參數可以是 SECURITY_NATIVE_DREP 或 SECURITY_NETWORK_DREP。
[in, out, optional] phNewContext
CtxtHandle結構的指標。 在第一次呼叫 AcceptSecurityCoNtext (CredSSP) 時,此指標會收到新的內容控制碼。 在後續呼叫時, phNewCoNtext 可以與 phCoNtext 參數中指定的控制碼相同。
[in, out, optional] pOutput
包含輸出緩衝區描述元之 SecBufferDesc 結構的指標。 此緩衝區會傳送至用戶端,以輸入至 初始化SecurityCoNtext (CredSSP) 的其他呼叫。 即使函式傳回SEC_E_OK,仍會產生輸出緩衝區。 產生的任何緩衝區都必須傳回用戶端應用程式。
在輸出時,此緩衝區會接收安全性內容的權杖。 權杖必須傳送至用戶端。 函式也可以傳回類型為 SECBUFFER_EXTRA 的緩衝區。
[out] pfContextAttr
一組位旗標的指標,指出已建立內容的屬性。 如需各種屬性的描述,請參閱 內容需求。 用於此參數的旗標前面會加上 ASC_RET,例如,ASC_RET_DELEGATE。
在最終函式呼叫成功傳回之前,請勿檢查安全性相關屬性。 屬性旗標與安全性無關,例如ASC_RET_ALLOCATED_MEMORY旗標,可以在最終傳回之前檢查。
[out, optional] ptsExpiry
接收內容到期時間之 TimeStamp 結構的指標。 建議 安全性套件 一律在當地時間傳回此值。
傳回值
此函式會傳回下列其中一個值。
傳回碼/值 | 描述 |
---|---|
|
此函數已成功。 輸入緩衝區中的資料不完整。 應用程式必須從用戶端讀取其他資料,並再次呼叫 AcceptSecurityCoNtext (CredSSP) 。 |
|
函式失敗。 記憶體不足,無法完成要求的動作。 |
|
函式失敗。 未對應至 SSPI 錯誤碼的錯誤。 |
|
函式失敗。 傳遞至函式的控制碼無效。 |
|
函式失敗。 傳遞至函式的權杖無效。 |
|
登入失敗。 |
|
函式失敗。 無法連絡授權單位以進行驗證。 這可能是因為下列情況所造成:
|
|
函式失敗。 phCredential參數中指定的認證控制碼無效。 |
|
此函數已成功。 已接受從用戶端接收的安全性內容。 如果函式產生輸出權杖,則必須將權杖傳送至用戶端進程。 |
|
函式失敗。 fCoNtextReq參數指定了不正確內容屬性旗標 (ASC_REQ_DELEGATE 或ASC_REQ_PROMPT_FOR_CREDS) 。 |
|
此函數已成功。 伺服器必須呼叫 CompleteAuthToken ,並將輸出權杖傳遞至用戶端。 接著,伺服器必須等候來自用戶端的傳回權杖,再呼叫 AcceptSecurityCoNtext (CredSSP) 。 |
|
此函數已成功。 伺服器必須在呼叫 CompleteAuthToken之前,從用戶端完成建置訊息。 |
|
此函數已成功。 伺服器必須將輸出權杖傳送至用戶端,並等候傳回的權杖。 傳回的權杖應該在 pInput 中傳遞,以呼叫 AcceptSecurityCoNtext (CredSSP) 。 |
備註
AcceptSecurityCoNtext (CredSSP) 函式是與 InitializeSecurityCoNtext (CredSSP) 函式的伺服器對應專案。
當伺服器從用戶端收到要求時,它會使用 fCoNtextReq 參數來指定會話所需的內容。 如此一來,伺服器就可以要求用戶端能夠使用機密或 完整性檢查的會話;它可以拒絕不符合該需求的用戶端。 或者,伺服器不需要任何專案;無論用戶端需要或可以提供的任何內容,都會在 pfCoNtextAttr 參數中傳回。
fCoNtextReq和pfCoNtextAttr參數是代表各種內容屬性的位元遮罩。 如需各種屬性的描述,請參閱 內容需求。
建立安全性內容之後,伺服器應用程式可以使用 QuerySecurityCoNtextToken 函式來擷取用戶端憑證所對應的使用者帳戶控制碼。 此外,伺服器可以使用 ImpersonateSecurityCoNtext 函式來模擬使用者。
規格需求
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | sspi.h (包含 Security.h) |
程式庫 | Secur32.lib |
Dll | Secur32.dll |