SpInitLsaModeContextFn 回呼函式 (ntsecpkg.h)
SpInitLsaModeContext 函式是用戶端分派函式,用來建立伺服器與客戶端之間的安全性內容。
當用戶端呼叫 Security Support Provider Interface 的 InitializeSecurityContext (General) 函式時,會呼叫 SpInitLsaModeContext 函式。
語法
SpInitLsaModeContextFn Spinitlsamodecontextfn;
NTSTATUS Spinitlsamodecontextfn(
[in] LSA_SEC_HANDLE CredentialHandle,
[in] LSA_SEC_HANDLE ContextHandle,
[in] PUNICODE_STRING TargetName,
[in] ULONG ContextRequirements,
[in] ULONG TargetDataRep,
[in] PSecBufferDesc InputBuffers,
[out] PLSA_SEC_HANDLE NewContextHandle,
[out] PSecBufferDesc OutputBuffers,
[out] PULONG ContextAttributes,
[out] PTimeStamp ExpirationTime,
[out] PBOOLEAN MappedContext,
[out] PSecBuffer ContextData
)
{...}
參數
[in] CredentialHandle
選擇性。 要用於內容的認證句柄。 如果 ContextHandle 參數不是 NULL,CredentialHandle 可以是 NULL。
[in] ContextHandle
選擇性。 要作為此內容基礎的內容句柄。 如果 CredentialHandle 參數不是 NULL,ContextHandle 可以是 NULL。
[in] TargetName
選擇性。 包含內容目標名稱 的UNICODE_STRING 指標。 TargetName 的內容是套件專屬的,且不會由 LSA 解譯。
[in] ContextRequirements
旗標,指出用戶端所需的內容屬性。 實際的內容屬性會在 ContextAttributes 參數中傳回。
下表列出有效的值。
值 | 意義 |
---|---|
|
允許伺服器模擬用戶端。 |
|
用戶端和伺服器都需要證明其身分識別。 |
|
安全性內容將支持偵測重新執行的封包。 |
|
安全性內容將支援偵測順序錯誤訊息。 |
|
必須交涉新的 會話金鑰 。 |
|
如果用戶端是互動式使用者,封裝必須盡可能提示使用者輸入適當的認證。 |
|
輸入緩衝區包含封裝特定的認證資訊,應該用來驗證連線。 |
|
封裝必須配置記憶體。 呼叫端最終必須呼叫 FreeContextBuffer函 式,以釋放封裝所配置的記憶體。 |
|
呼叫端需要三次相互驗證交易。 |
|
應該使用數據報類型通道。 如需詳細資訊,請參閱 數據報內容。 |
|
應該使用連線類型通道。 如需詳細資訊,請參閱 連接導向內容。 |
|
如果內容失敗,請產生錯誤回復訊息以傳送回用戶端。 |
|
應該使用串流類型通道。 如需詳細資訊,請參閱 Stream 內容。 |
|
已驗證緩衝區完整性;不過,不會偵測到重新執行和序列外訊息。 |
[in] TargetDataRep
旗標,指出目標上的數據表示法,例如位元組排序。 包含SECURITY_NATIVE_DREP或SECURITY_NETWORK_DREP。
[in] InputBuffers
SecBufferDesc 結構的指標,其中包含來自伺服器的先前回復訊息。 第一次呼叫此函式時 ,InputBuffers 參數為 NULL。
[out] NewContextHandle
接收新 安全性內容的句柄的指標。 當您完成使用安全性內容時,請呼叫 SpDeleteContext 函式來釋放句柄。
[out] OutputBuffers
SecBufferDesc 結構的指標,其中包含要傳回至伺服器的安全性令牌。
[out] ContextAttributes
指定新內容屬性之旗標的指標。 用戶端會使用 ContextRequirements 參數要求一組屬性。 如果 ContextRequirements 旗標不符合 ContextAttributes 旗標,客戶端必須決定是否要繼續或終止。 如需有效旗標的完整清單,請參閱 內容需求。
[out] ExpirationTime
TimeStamp 的指標,接收新內容的到期時間。
[out] MappedContext
布爾值的指標。 如果安全性套件實作使用者模式 SSP/AP 函式,請將 MappedContext 設定為 TRUE。
[out] ContextData
SecBuffer 結構的指標,該結構會在建立使用者模式安全性內容時接收要複製的數據。 使用 AllocateLsaHeap 函式為 ContextData 配置記憶體。 LSA 會釋放記憶體。
傳回值
如果函式成功且不需要再處理,請傳回STATUS_SUCCESS。 如果處理未完成,函式應該會傳回SEC_I_CONTINUE_NEEDED。 傳回此值時,呼叫端必須再次呼叫 InitializeSecurityContext (General) 函式。
如果函式因任何其他原因而無法建立 安全性內容 ,它應該會傳回NTSTATUS程式代碼,指出失敗的原因。
備註
SpAcceptLsaModeContext 函式是用於建立內容的伺服器端函式。
SSP/AP 必須實作 SpInitLsaModeContext 函式;不過,提供給實作的實際名稱是由開發人員決定。
SpInitLsaModeContext 函式的指標可在從 SpLsaModeInitialize 函式收到的SECPKG_FUNCTION_TABLE結構中使用。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | ntsecpkg.h |