Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med funktionen AcceptSecurityContext (NTLM) kan serverkomponenten i ett transportprogram upprätta en säkerhetskontext mellan servern och en fjärrklient. Fjärrklienten använder funktionen InitializeSecurityContext (NTLM) för att starta processen med att upprätta en säkerhetskontext. Servern kan kräva en eller flera svarstoken från fjärrklienten för att slutföra upprättandet av säkerhetskontexten.
Syntax
SECURITY_STATUS SEC_Entry AcceptSecurityContext(
_In_opt_ PCredHandle phCredential,
_Inout_opt_ PCtxtHandle phContext,
_In_opt_ PSecBufferDesc pInput,
_In_ ULONG fContextReq,
_In_ ULONG TargetDataRep,
_Inout_opt_ PCtxtHandle phNewContext,
_Inout_opt_ PSecBufferDesc pOutput,
_Out_ PULONG pfContextAttr,
_Out_opt_ PTimeStamp ptsTimeStamp
);
Parameterar
phCredential[in, optional]
En referens till serverns autentiseringsuppgifter. Servern anropar funktionen AcquireCredentialsHandle (NTLM) med antingen flaggan SECPKG_CRED_INBOUND eller SECPKG_CRED_BOTH inställd för att hämta handtaget.
phContext[in, out, optional]
En pekare till en CtxtHandle struktur. Vid det första anropet till AcceptSecurityContext (NTLM) är NULLden här pekaren . Vid efterföljande anrop är phContext referensen till den delvis formade kontext som returnerades i parametern phNewContext av det första anropet.
Varning
Använd inte samma kontextreferens i samtidiga anrop till AcceptSecurityContext (NTLM). API-implementeringen i säkerhetstjänstleverantörerna är inte trådsäker.
pInput[in, optional]
En pekare till en SecBufferDesc-struktur som genereras av ett klientanrop till InitializeSecurityContext (NTLM) som innehåller indatabuffertbeskrivningen.
Information om kanalbindning kan anges genom att skicka in en SecBuffer-struktur av typen SECBUFFER_CHANNEL_BINDINGS utöver de buffertar som genereras av anropet till funktionen InitializeSecurityContext (Allmänt). Kanalbindningsinformationen för kanalbindningsbufferten kan hämtas genom att anropa funktionen QueryContextAttributes (Schannel) i den Schannel-kontext som klienten använde för att autentisera.
fContextReq[in]
Bitflaggor som anger de attribut som krävs av servern för att upprätta kontexten. Bitflaggor kan kombineras med hjälp av bitvisELLER åtgärder. Den här parametern kan vara ett eller flera av följande värden.
| Värde | Innebörd |
|---|---|
| ASC_REQ_CONFIDENTIALITY | Kryptera och dekryptera meddelanden. |
| ASC_REQ_CONNECTION | Säkerhetskontexten hanterar inte formateringsmeddelanden. |
| ASC_REQ_EXTENDED_ERROR | När fel inträffar meddelas fjärrparten. |
| ASC_REQ_INTEGRITY | Signera meddelanden och verifiera signaturer. |
| ASC_REQ_REPLAY_DETECT | Identifiera uppspelade paket. |
| ASC_REQ_SEQUENCE_DETECT | Identifiera meddelanden som tagits emot utan sekvens. |
Möjliga attributflaggor och deras betydelser finns i Kontextkrav. Flaggor som används för den här parametern är prefix med ASC_REQ, till exempel ASC_REQ_DELEGATE.
De begärda attributen kanske inte stöds av klienten. Mer information finns i parametern pfContextAttr.
TargetDataRep[in]
Datarepresentationen, till exempel byteordning, på målet. Den här parametern kan vara antingen SECURITY_NATIVE_DREP eller SECURITY_NETWORK_DREP.
phNewContext[in, out, optional]
En pekare till en CtxtHandle struktur. Vid det första anropet till AcceptSecurityContext (NTLM) tar den här pekaren emot det nya kontexthandtaget. Vid efterföljande anrop kan phNewContext vara samma som referensen som anges i parametern phContext.
phNewContext ska aldrig vara NULL.
pOutput[in, out, optional]
En pekare till en SecBufferDesc struktur som innehåller utdatabuffertbeskrivningen. Den här bufferten skickas till klienten för indata till ytterligare anrop till InitializeSecurityContext (NTLM). En utdatabuffert kan genereras även om funktionen returnerar SEC_E_OK. Alla buffertar som genereras måste skickas tillbaka till klientprogrammet.
pfContextAttr[out]
En pekare till en variabel som tar emot en uppsättning bitflaggor som anger attributen för den etablerade kontexten. En beskrivning av de olika attributen finns i Kontextkrav. Flaggor som används för den här parametern är prefix med ASC_RET, till exempel ASC_RET_DELEGATE.
Sök inte efter säkerhetsrelaterade attribut förrän det slutliga funktionsanropet returneras. Attributflaggor som inte är relaterade till säkerhet, till exempel flaggan ASC_RET_ALLOCATED_MEMORY, kan kontrolleras innan den slutliga returen.
ptsTimeStamp[out, optional]
En pekare till en TimeStamp struktur som tar emot förfallotiden för kontexten. Vi rekommenderar att säkerhetspaketet alltid returnerar det här värdet lokalt.
Anmärkning
Fram till det sista anropet av autentiseringsprocessen kan förfallotiden för kontexten vara felaktig eftersom mer information kommer att tillhandahållas under senare skeden av förhandlingen. Därför måste ptsTimeStamp vara NULL tills det sista anropet till funktionen.
Returvärde
Den här funktionen returnerar något av följande värden.
| Returnera kod/värde | Beskrivning |
|---|---|
| Funktionen misslyckades. Det finns inte tillräckligt med minne för att slutföra den begärda åtgärden. |
| Funktionen misslyckades. Ett fel uppstod som inte mappades till en SSPI-felkod. |
| Funktionen misslyckades. Handtaget som skickas till funktionen är inte giltigt. |
| Funktionen misslyckades. Token som skickas till funktionen är inte giltig. |
| Inloggningen misslyckades. |
| Funktionen misslyckades. Det gick inte att kontakta någon utfärdare för autentisering. Detta kan bero på följande villkor:
|
| Funktionen lyckades. [*säkerhetskontexten*](.. /secgloss/s-gly.md) som togs emot från klienten accepterades. Om en utdatatoken genererades av funktionen måste den skickas till klientprocessen. |
| Funktionen lyckades. Servern måste anropa [CompleteAuthToken](/windows/win32/api/sspi/nf-sspi-completeauthtoken) och skicka utdatatoken till klienten. Servern väntar sedan på en returtoken från klienten och gör sedan ett nytt anrop till [AcceptSecurityContext (NTLM)](acceptsecuritycontext--ntlm.md). |
| Funktionen lyckades. Servern måste slutföra skapandet av meddelandet från klienten och anropa sedan funktionen [CompleteAuthToken](/windows/win32/api/sspi/nf-sspi-completeauthtoken). |
| Funktionen lyckades. Servern måste skicka utdatatoken till klienten och vänta på en returnerad token. Den returnerade token ska skickas i pInput för ett annat anrop till [AcceptSecurityContext (NTLM)](acceptsecuritycontext--ntlm.md). |
Anmärkningar
Funktionen AcceptSecurityContext (NTLM) är servermotsvarigheten till funktionen InitializeSecurityContext (NTLM).
När servern tar emot en begäran från en klient använder servern parametern fContextReq för att ange vad som krävs för sessionen. På det här sättet kan en server ange att klienter måste kunna använda en konfidentiell eller integritet-kontrollerad session, och den kan avvisa klienter som inte kan uppfylla detta krav. En server kan också inte kräva något, och det som klienten kan tillhandahålla eller kräver returneras i parametern pfContextAttr.
För ett paket som stöder autentisering med flera ben, till exempel ömsesidig autentisering, är anropssekvensen följande:
- Klienten skickar en token till servern.
- Servern anropar AcceptSecurityContext (NTLM) första gången, vilket genererar en svarstoken som sedan skickas till klienten.
- Klienten tar emot token och skickar den till InitializeSecurityContext (NTLM). Om InitializeSecurityContext (NTLM) returnerar SEC_E_OK har ömsesidig autentisering slutförts och en säker session kan inledas. Om InitializeSecurityContext (NTLM) returnerar en felkod avslutas förhandlingen om ömsesidig autentisering. Annars skickas säkerhetstoken som returneras av InitializeSecurityContext (NTLM) till klienten och steg 2 och 3 upprepas.
- Använd inte phContext-värdet i samtidiga anrop till AcceptSecurityContext (NTLM). Implementeringen i säkerhetsprovidrar är inte trådsäker.
parametrarna fContextReq och pfContextAttr är bitmasker som representerar olika kontextattribut. En beskrivning av de olika attributen finns i Kontextkrav.
Anmärkning
Parametern pfContextAttr är giltig vid lyckad retur, men endast vid den slutliga lyckade returen bör du undersöka flaggorna som rör säkerhetsaspekter i kontexten. Mellanliggande returer kan till exempel ange flaggan ISC_RET_ALLOCATED_MEMORY.
Anroparen ansvarar för att avgöra om de slutliga kontextattributen är tillräckliga. Om till exempel konfidentialitet (kryptering) begärdes, men inte kunde upprättas, kan vissa program välja att stänga av anslutningen omedelbart. Om säkerhetskontext inte kan upprättas måste servern frigöra den delvis skapade kontexten genom att anropa funktionen DeleteSecurityContext. Information om när du ska anropa funktionen DeleteSecurityContext finns i DeleteSecurityContext.
När säkerhetskontext har upprättats kan serverprogrammet använda funktionen QuerySecurityContextToken för att hämta en referens till det användarkonto som klientcertifikatet mappades till. Dessutom kan servern använda funktionen ImpersonateSecurityContext för att personifiera användaren.
Krav
| Krav | Värde |
|---|---|
| Lägsta klient som stöds | Windows XP [endast skrivbordsappar] |
| Lägsta server som stöds | Windows Server 2003 [endast skrivbordsappar] |
| Header | Sspi.h (inkludera Security.h) |
| Bibliotek | Secur32.lib |
| DLL | Secur32.dll |