Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja AcceptSecurityContext (CredSSP) umożliwia składnikowi serwera aplikacji transportowej ustanowienie kontekstu zabezpieczeń między serwerem a klientem zdalnym. Klient zdalny wywołuje funkcję InitializeSecurityContext (CredSSP), aby rozpocząć proces ustanawiania kontekstu zabezpieczeń. Serwer może wymagać co najmniej jednego tokenu odpowiedzi od klienta zdalnego w celu ukończenia ustanawiania kontekstu zabezpieczeń.
Składnia
SECURITY_STATUS SEC_ENTRY AcceptSecurityContext(
_In_opt_ PCredHandle phCredential,
_In_opt_ PCtxtHandle phContext,
_In_opt_ PSecBufferDesc pInput,
_In_ unsigned long fContextReq,
_In_ unsigned long TargetDataRep,
_Inout_opt_ PCtxtHandle phNewContext,
_Inout_opt_ PSecBufferDesc pOutput,
_Out_ unsigned long *pfContextAttr,
_Out_opt_ PTimeStamp ptsExpiry
);
Parametry
phCredential (poświadczenie)[in, optional]
Dojście do poświadczeń serwera. Aby pobrać ten uchwyt, serwer wywołuje funkcję AcquireCredentialsHandle (CredSSP) z ustawioną flagą SECPKG_CRED_INBOUND lub SECPKG_CRED_BOTH.
phContext
Wskaźnik do struktury CtxtHandle. W pierwszym wywołaniu metody AcceptSecurityContext (CredSSP) ten wskaźnik to NULL. W kolejnych wywołaniach fraza phContext określa częściowo sformułowany kontekst zwracany w parametrze phNewContext przez pierwsze wywołanie.
Ostrzeżenie
Nie używaj tego samego uchwytu kontekstu w wywołaniach współbieżnych do elementu AcceptSecurityContext (CredSSP). Implementacja interfejsu API u dostawców usług zabezpieczeń nie jest bezpieczna wątkowo.
[in, optional] pInput
Wskaźnik do struktury SecBufferDesc wygenerowanej przez wywołanie klienta do InitializeSecurityContext (CredSSP). Struktura zawiera deskryptor buforu wejściowego.
Pierwszy bufor musi być typu SECBUFFER_TOKEN i zawiera token zabezpieczający otrzymany od klienta. Drugi bufor powinien być typu SECBUFFER_EMPTY.
fContextReq (Żądanie fContextReq)[in]
-Flagi bitowe, które określają atrybuty wymagane przez serwer do ustanowienia kontekstu. Flagi bitowe można łączyć przy użyciu operacji bitowychLUB. Ten parametr może być co najmniej jedną z następujących wartości.
| Wartość | Znaczenie |
|---|---|
| ASC_REQ_ALLOCATE_MEMORY | Dostawca obsługi zabezpieczeń poświadczeń (CredSSP) przydzieli wyjściowe. Po zakończeniu korzystania z wyjściowych zwolnij je, wywołując funkcję FreeContextBuffer. |
| ASC_REQ_CONNECTION | Kontekst zabezpieczeń nie obsługuje formatowania komunikatów. |
| ASC_REQ_DELEGATE | Serwer może personifikować klienta. Ignoruj tę flagę dla ograniczonego delegowania. |
| ASC_REQ_EXTENDED_ERROR | Gdy wystąpią błędy, strona zdalna zostanie powiadomiona. |
| ASC_REQ_REPLAY_DETECT | Wykryj ponownie odtwarzane pakiety. |
| ASC_REQ_SEQUENCE_DETECT | Wykrywanie komunikatów odebranych z sekwencji. |
| ASC_REQ_STREAM | Obsługa połączenia zorientowanego na strumień. |
Aby uzyskać informacje o możliwych flagach atrybutów i ich znaczeniach, zobacz Wymagania kontekstowe. Flagi używane dla tego parametru są poprzedzone ASC_REQ, na przykład ASC_REQ_DELEGATE.
Żądane atrybuty mogą nie być obsługiwane przez klienta. Aby uzyskać więcej informacji, zobacz parametr pfContextAttr.
TargetDataRep (Przedstawiciel docelowy)[in]
Reprezentacja danych, taka jak kolejność bajtów, w obiekcie docelowym. Ten parametr może być SECURITY_NATIVE_DREP lub SECURITY_NETWORK_DREP.
phNewContext (Kontekst Nowy)[in, out, optional]
Wskaźnik do struktury CtxtHandle. Przy pierwszym wywołaniu metody AcceptSecurityContext (CredSSP) ten wskaźnik otrzymuje nowy uchwyt kontekstu. W kolejnych wywołaniach phNewContext może być taki sam jak uchwyt określony w phContext parametru.
[in, out, optional] pOutput
Wskaźnik do struktury SecBufferDesc, która zawiera deskryptor buforu wyjściowego. Ten bufor jest wysyłany do klienta w celu wprowadzenia danych wejściowych do dodatkowych wywołań metody InitializeSecurityContext (CredSSP). Bufor wyjściowy może być generowany nawet wtedy, gdy funkcja zwróci SEC_E_OK. Wszystkie wygenerowane muszą być wysyłane z powrotem do aplikacji klienckiej.
W danych wyjściowych ten bufor odbiera token dla kontekstu zabezpieczeń. Token musi zostać wysłany do klienta. Funkcja może również zwrócić bufor typu SECBUFFER_EXTRA.
pfContextAttr[out]
Wskaźnik do zestawu flag bitowych, które wskazują atrybuty ustalonego kontekstu. Aby uzyskać opis różnych atrybutów, zobacz Wymagania dotyczące kontekstu. Flagi używane dla tego parametru są poprzedzone ASC_RET, na przykład ASC_RET_DELEGATE.
Nie sprawdzaj atrybutów związanych z zabezpieczeniami, dopóki ostateczne wywołanie funkcji nie zostanie pomyślnie zwrócone. Flagi atrybutów niezwiązane z zabezpieczeniami, takie jak flaga ASC_RET_ALLOCATED_MEMORY, można sprawdzić przed ostatecznym zwróceniem.
ptsWygaśnięcie[out, optional]
Wskaźnik do struktury sygnatury czasowej, która odbiera czas wygaśnięcia kontekstu. Zalecamy, aby pakiet zabezpieczeń zawsze zwracał tę wartość w czasie lokalnym.
Uwaga
Do czasu ostatniego wywołania procesu uwierzytelniania czas wygaśnięcia kontekstu może być niepoprawny, ponieważ więcej informacji zostanie podanych w późniejszych etapach negocjacji. W związku z tym ptsTimeStamp musi być NULL do ostatniego wywołania funkcji.
Wartość zwracana
Ta funkcja zwraca jedną z następujących wartości.
| Zwracanie kodu/wartości | Opis |
|---|---|
| SEC_E_INCOMPLETE_MESSAGE 0x80090318L |
Funkcja zakończyła się pomyślnie. Dane w buforze wejściowym są niekompletne. Aplikacja musi odczytywać dodatkowe dane z klienta i ponownie wywołać metodę AcceptSecurityContext (CredSSP). |
| SEC_E_INSUFFICIENT_MEMORY 0x80090300L |
Funkcja nie powiodła się. Za mało pamięci, aby ukończyć żądaną akcję. |
| SEC_E_INTERNAL_ERROR 0x80090304L |
Funkcja nie powiodła się. Wystąpił błąd, który nie został zamapowyny na kod błędu interfejsu SSPI. |
| SEC_E_INVALID_HANDLE 0x80100003L |
Funkcja nie powiodła się. Dojście przekazane do funkcji jest nieprawidłowe. |
| SEC_E_INVALID_TOKEN 0x80090308L |
Funkcja nie powiodła się. Token przekazany do funkcji jest nieprawidłowy. |
| SEC_E_LOGON_DENIED 0x8009030CL |
Logowanie nie powiodło się. |
| SEC_E_NO_AUTHENTICATING_AUTHORITY 0x80090311L |
Funkcja nie powiodła się. Nie można skontaktować się z urzędem w celu uwierzytelnienia. Może to być spowodowane następującymi warunkami:
|
| SEC_E_NO_CREDENTIALS 0x8009030EL |
Funkcja nie powiodła się. Poświadczenia obsługiwane w parametrze phCredential są nieprawidłowe. |
| SEC_E_OK 0x00000000L |
Funkcja zakończyła się pomyślnie. Kontekst zabezpieczeń odebrany od klienta został zaakceptowany. Jeśli funkcja wygenerowała token wyjściowy, token musi zostać wysłany do procesu klienta. |
| SEC_E_UNSUPPORTED_FUNCTION 0x80090302L |
Funkcja nie powiodła się. Parametr fContextReq określił flagę atrybutu kontekstu (ASC_REQ_DELEGATE lub ASC_REQ_PROMPT_FOR_CREDS), która jest nieprawidłowa. |
| SEC_I_COMPLETE_AND_CONTINUE 0x00090314L |
Funkcja zakończyła się pomyślnie. Serwer musi wywołać CompleteAuthToken i przekazać token wyjściowy do klienta. Serwer musi następnie poczekać na token powrotny od klienta przed wykonaniem innego wywołania metody AcceptSecurityContext (CredSSP). |
| SEC_I_COMPLETE_NEEDED 0x00090313L |
Funkcja zakończyła się pomyślnie. Serwer musi zakończyć tworzenie komunikatu od klienta przed wywołaniem metody CompleteAuthToken |
| SEC_I_CONTINUE_NEEDED 0x00090312L |
Funkcja zakończyła się pomyślnie. Serwer musi wysłać token wyjściowy do klienta i poczekać na zwrócony token. Zwrócony token powinien zostać przekazany w pliku pInput dla innego wywołania metody AcceptSecurityContext (CredSSP). |
Uwagi
Funkcja AcceptSecurityContext (CredSSP) jest odpowiednikiem serwera funkcji InitializeSecurityContext (CredSSP).
Gdy serwer odbiera żądanie od klienta, używa parametru fContextReq , aby określić, czego wymaga sesji. W ten sposób serwer może wymagać, aby klienci mogli korzystać z sesji sprawdzanej pod kątem poufności lub integralności; może odrzucać klientów, którzy nie mogą sprostać tym zapotrzebowaniu. Alternatywnie serwer nie może wymagać niczego; niezależnie od tego, czego klient wymaga lub może podać, jest zwracany w parametrze pfContextAttr .
Parametry fContextReqreq i pfContextAttr to maski bitów reprezentujące różne atrybuty kontekstu. Aby uzyskać opis różnych atrybutów, zobacz Wymagania dotyczące kontekstu.
Uwaga
Chociaż parametr pfContextAttr jest prawidłowy w przypadku dowolnego pomyślnego powrotu, należy sprawdzić flagi odnoszące się do aspektów zabezpieczeń kontekstu tylko w przypadku końcowego pomyślnego powrotu. Zwroty pośrednie mogą na przykład ustawić flagę ISC_RET_ALLOCATED_MEMORY.
Obiekt wywołujący jest odpowiedzialny za określenie, czy ostateczne atrybuty kontekstu są wystarczające. Jeśli na przykład zażądano poufności (szyfrowania), ale nie można go ustanowić, niektóre aplikacje mogą natychmiast zamknąć połączenie. Jeśli nie można ustanowić kontekstu zabezpieczeń, serwer musi zwolnić częściowo utworzony kontekst, wywołując funkcję DeleteSecurityContext . Aby uzyskać informacje o tym, kiedy wywołać funkcję DeleteSecurityContext, zobacz DeleteSecurityContext.
Po ustanowieniu kontekstu zabezpieczeń aplikacja serwera może użyć funkcji QuerySecurityContextToken , aby pobrać uchwyt do konta użytkownika, do którego został zamapowany certyfikat klienta. Ponadto serwer może użyć funkcji ImpersonateSecurityContext, aby personifikować użytkownika.
Wymagania
| Wymaganie | Wartość |
|---|---|
| Minimalny obsługiwany klient | Windows Vista [tylko aplikacje klasyczne] |
| Minimalny obsługiwany serwer | Windows Server 2008 [tylko aplikacje klasyczne] |
| Nagłówek | Sspi.h (w tym Security.h) |
| Biblioteka | Secur32.lib powiedział: |
| DLL | Secur32.dll |
Zobacz też
- funkcji SSPI
- DeleteSecurityContext
- InitializeSecurityContext (CredSSP)