SpInitLsaModeContextFn 回呼函式 (ntsecpkg.h)

SpInitLsaModeContext 函式是用戶端分派函式,用來建立伺服器與客戶端之間的安全性內容

當用戶端呼叫 Security Support Provider InterfaceInitializeSecurityContext (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 參數中傳回。

下表列出有效的值。

意義
ISC_REQ_DELEGATE
允許伺服器模擬用戶端。
ISC_REQ_MUTUAL_AUTH
用戶端和伺服器都需要證明其身分識別。
ISC_REQ_REPLAY_DETECT
安全性內容將支持偵測重新執行的封包。
ISC_REQ_SEQUENCE_DETECT
安全性內容將支援偵測順序錯誤訊息。
ISC_REQ_USE_SESSION_KEY
必須交涉新的 會話金鑰
ISC_REQ_PROMPT_FOR_CREDS
如果用戶端是互動式使用者,封裝必須盡可能提示使用者輸入適當的認證。
ISC_REQ_USE_SUPPLIED_CREDS
輸入緩衝區包含封裝特定的認證資訊,應該用來驗證連線。
ISC_REQ_ALLOCATE_MEMORY
封裝必須配置記憶體。 呼叫端最終必須呼叫 FreeContextBuffer函 式,以釋放封裝所配置的記憶體。
ISC_REQ_USE_DCE_STYLE
呼叫端需要三次相互驗證交易。
ISC_REQ_DATAGRAM
應該使用數據報類型通道。 如需詳細資訊,請參閱 數據報內容
ISC_REQ_CONNECTION
應該使用連線類型通道。 如需詳細資訊,請參閱 連接導向內容
ISC_REQ_EXTENDED_ERROR
如果內容失敗,請產生錯誤回復訊息以傳送回用戶端。
ISC_REQ_STREAM
應該使用串流類型通道。 如需詳細資訊,請參閱 Stream 內容
ISC_REQ_INTEGRITY
已驗證緩衝區完整性;不過,不會偵測到重新執行和序列外訊息。

[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

另請參閱

AllocateLsaHeap

InitializeSecurityContext (一般)

SECPKG_FUNCTION_TABLE

SpAcceptLsaModeContext

SpLsaModeInitialize

TimeStamp