Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met de AcceptSecurityContext (CredSSP) functie kan het serveronderdeel van een transporttoepassing een beveiligingscontext tussen de server en een externe client tot stand brengen. De externe client roept de InitializeSecurityContext (CredSSP) functie aan om het proces van het tot stand brengen van een beveiligingscontext te starten. De server kan een of meer antwoordtokens van de externe client vereisen om de beveiligingscontext tot stand te brengen.
Syntaxis
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
);
Parameterwaarden
phCredential-[in, optional]
Een ingang naar de serverreferenties. Om deze ingang op te halen, roept de server de AcquireCredentialsHandle (CredSSP) aan met de SECPKG_CRED_INBOUND of SECPKG_CRED_BOTH vlag ingesteld.
phContext-[in, optional]
Een aanwijzer naar een CtxtHandle structuur. Bij de eerste aanroep van AcceptSecurityContext (CredSSP), wordt deze aanwijzer NULL. Bij volgende aanroepen geeft phContext- de gedeeltelijk gevormde context op die wordt geretourneerd in de phNewContext-parameter door de eerste aanroep.
Waarschuwing
Gebruik niet dezelfde contextgreep in gelijktijdige aanroepen naar AcceptSecurityContext (CredSSP). De API-implementatie in de beveiligingsserviceproviders is niet thread-safe.
[in, optional]
Een aanwijzer naar een SecBufferDesc structuur gegenereerd door een clientaanroep naar InitializeSecurityContext (CredSSP). De structuur bevat de ingevoerde bufferdescriptor.
De eerste buffer moet van het type SECBUFFER_TOKEN zijn en het beveiligingstoken bevatten dat van de client is ontvangen. De tweede buffer moet van het type SECBUFFER_EMPTYzijn.
fContextReq-[in]
-Bit-vlaggen waarmee de kenmerken worden opgegeven die door de server zijn vereist om de context tot stand te brengen. Bitvlagmen kunnen worden gecombineerd met bitwise-OF bewerkingen. Deze parameter kan een of meer van de volgende waarden zijn.
| Waarde | Betekenis |
|---|---|
| ASC_REQ_ALLOCATE_MEMORY | CredSSP (Credential Security Support Provider) wijst uitvoerbuffers toe. Wanneer u klaar bent met het gebruik van de uitvoerbuffers, maakt u deze vrij door de functie FreeContextBuffer aan te roepen. |
| ASC_REQ_CONNECTION | De beveiligingscontext verwerkt geen opmaakberichten. |
| ASC_REQ_DELEGATE | De server mag de client imiteren. Negeer deze vlag voor beperkte delegering. |
| ASC_REQ_EXTENDED_ERROR | Wanneer er fouten optreden, wordt de externe partij op de hoogte gesteld. |
| ASC_REQ_REPLAY_DETECT | Detecteer opnieuw afgespeelde pakketten. |
| ASC_REQ_SEQUENCE_DETECT | Detecteer berichten die niet op volgorde zijn ontvangen. |
| ASC_REQ_STREAM | Ondersteuning voor een streamgeoriƫnteerde verbinding. |
Zie Contextvereistenvoor mogelijke kenmerkvlagmen en betekenissen. Vlaggen die voor deze parameter worden gebruikt, worden voorafgegaan door ASC_REQ, bijvoorbeeld ASC_REQ_DELEGATE.
De aangevraagde kenmerken worden mogelijk niet ondersteund door de client. Zie de parameter pfContextAttr voor meer informatie.
TargetDataRep-[in]
De gegevensweergave, zoals bytevolgorde, op het doel. Deze parameter kan worden SECURITY_NATIVE_DREP of SECURITY_NETWORK_DREP.
phNewContext-[in, out, optional]
Een aanwijzer naar een CtxtHandle structuur. Bij de eerste aanroep van AcceptSecurityContext (CredSSP), ontvangt deze aanwijzer de nieuwe contextgreep. Bij volgende aanroepen kan phNewContext- hetzelfde zijn als de ingang die is opgegeven in de parameter phContext.
pOutput-[in, out, optional]
Een aanwijzer naar een SecBufferDesc structuur die de uitvoerbufferdescriptor bevat. Deze buffer wordt verzonden naar de client voor invoer in aanvullende aanroepen naar InitializeSecurityContext (CredSSP). Er kan een uitvoerbuffer worden gegenereerd, zelfs als de functie SEC_E_OK retourneert. Elke gegenereerde buffer moet worden teruggestuurd naar de clienttoepassing.
Bij uitvoer ontvangt deze buffer een token voor de beveiligingscontext. Het token moet naar de client worden verzonden. De functie kan ook een buffer van het type SECBUFFER_EXTRA retourneren.
pfContextAttr-[out]
Een aanwijzer naar een set bitvlaggen die de kenmerken van de tot stand gebrachte context aangeven. Zie Contextvereistenvoor een beschrijving van de verschillende kenmerken. Vlaggen die voor deze parameter worden gebruikt, worden voorafgegaan door ASC_RET, bijvoorbeeld ASC_RET_DELEGATE.
Controleer pas op beveiligingskenmerken als de laatste functie-aanroep is geretourneerd. Kenmerkvlagmen die niet zijn gerelateerd aan beveiliging, zoals de vlag ASC_RET_ALLOCATED_MEMORY, kunnen worden gecontroleerd voordat de definitieve terugkeer wordt uitgevoerd.
ptsExpiry-[out, optional]
Een aanwijzer naar een TimeStamp structuur die de verlooptijd van de context ontvangt. Het is raadzaam dat het beveiligingspakket deze waarde altijd in lokale tijd retourneert.
Notitie
Tot de laatste aanroep van het verificatieproces kan de verlooptijd voor de context onjuist zijn, omdat er in latere fasen van de onderhandeling meer informatie wordt verstrekt. Daarom moet ptsTimeStamp- worden NULL tot de laatste aanroep van de functie.
Retourwaarde
Deze functie retourneert een van de volgende waarden.
| Retourcode/waarde | Beschrijving |
|---|---|
| SEC_E_INCOMPLETE_MESSAGE 0x80090318L |
De functie is geslaagd. De gegevens in de invoerbuffer zijn onvolledig. De toepassing moet aanvullende gegevens van de client lezen en AcceptSecurityContext (CredSSP) opnieuw aanroepen. |
| SEC_E_INSUFFICIENT_MEMORY 0x80090300L |
De functie is mislukt. Er is onvoldoende geheugen beschikbaar om de aangevraagde actie te voltooien. |
| SEC_E_INTERNAL_ERROR 0x80090304L |
De functie is mislukt. Er is een fout opgetreden die niet is toegewezen aan een SSPI-foutcode. |
| SEC_E_INVALID_HANDLE 0x80100003L |
De functie is mislukt. De greep die aan de functie is doorgegeven, is ongeldig. |
| SEC_E_INVALID_TOKEN 0x80090308L |
De functie is mislukt. Het token dat aan de functie is doorgegeven, is ongeldig. |
| SEC_E_LOGON_DENIED BTW nr. 0x8009030CL |
De aanmelding is mislukt. |
| SEC_E_NO_AUTHENTICATING_AUTHORITY 0x80090311L |
De functie is mislukt. Er kan geen contact worden gemaakt met de instantie voor verificatie. Dit kan worden veroorzaakt door de volgende voorwaarden:
|
| SEC_E_NO_CREDENTIALS 0x8009030EL |
De functie is mislukt. De referenties-ingang die is opgegeven in de parameter phCredential is ongeldig. |
| SEC_E_OK 0x000000000L |
De functie is geslaagd. De beveiligingscontext die van de client is ontvangen, is geaccepteerd. Als de functie een uitvoertoken heeft gegenereerd, moet het token naar het clientproces worden verzonden. |
| SEC_E_UNSUPPORTED_FUNCTION 0x80090302L |
De functie is mislukt. De parameter fContextReq heeft een contextkenmerkvlag (ASC_REQ_DELEGATE of ASC_REQ_PROMPT_FOR_CREDS) opgegeven die niet geldig was. |
| SEC_I_COMPLETE_AND_CONTINUE 0x00090314L |
De functie is geslaagd. De server moet CompleteAuthToken aanroepen en het uitvoertoken doorgeven aan de client. De server moet vervolgens wachten op een retourtoken van de client voordat een andere aanroep naar AcceptSecurityContext (CredSSP). |
| SEC_I_COMPLETE_NEEDED 0x00090313L |
De functie is geslaagd. De server moet het bouwen van het bericht van de client voltooien voordat CompleteAuthToken- |
| SEC_I_CONTINUE_NEEDED 0x00090312L |
De functie is geslaagd. De server moet het uitvoertoken naar de client verzenden en wachten op een geretourneerd token. Het geretourneerde token moet worden doorgegeven in pInput- voor een andere aanroep naar AcceptSecurityContext (CredSSP). |
Opmerkingen
De functie AcceptSecurityContext (CredSSP) is de server tegenhanger van de InitializeSecurityContext (CredSSP) functie.
Wanneer de server een aanvraag van een client ontvangt, wordt de parameter fContextReq gebruikt om op te geven wat deze van de sessie vereist. Op deze manier kan een server vereisen dat clients een vertrouwelijke of integriteit kunnen gebruiken-gecontroleerde sessie; het kan clients weigeren die niet aan die vraag kunnen voldoen. Een server kan ook niets vereisen; wat de client vereist of kan opgeven, wordt geretourneerd in de parameter pfContextAttr.
De parameters fContextReq en pfContextAttr zijn bitmaskers die verschillende contextkenmerken vertegenwoordigen. Zie Contextvereistenvoor een beschrijving van de verschillende kenmerken.
Notitie
Hoewel de parameter pfContextAttr geldig is voor een geslaagde retour, moet u de vlaggen onderzoeken die betrekking hebben op beveiligingsaspecten van de context alleen op de uiteindelijke geslaagde retour. Tussenliggende retourneert kan bijvoorbeeld de ISC_RET_ALLOCATED_MEMORY vlag instellen.
De aanroeper is verantwoordelijk voor het bepalen of de uiteindelijke contextkenmerken voldoende zijn. Als bijvoorbeeld vertrouwelijkheid (versleuteling) is aangevraagd maar niet tot stand kon worden gebracht, kunnen sommige toepassingen ervoor kiezen om de verbinding onmiddellijk af te sluiten. Als de beveiligingscontext niet tot stand kan worden gebracht, moet de server de gedeeltelijk gemaakte context vrij maken door de functie DeleteSecurityContext aan te roepen. Zie DeleteSecurityContextvoor informatie over wanneer u de functie DeleteSecurityContext aanroept.
Nadat de beveiligingscontext tot stand is gebracht, kan de servertoepassing de functie QuerySecurityContextToken gebruiken om een ingang op te halen voor het gebruikersaccount waaraan het clientcertificaat is toegewezen. De server kan ook de functie ImpersonateSecurityContext gebruiken om de gebruiker te imiteren.
Eisen
| Eis | Waarde |
|---|---|
| Minimaal ondersteunde client | Windows Vista [alleen desktop-apps] |
| Minimaal ondersteunde server | Windows Server 2008 [alleen desktop-apps] |
| Rubriek | Sspi.h (inclusief Security.h) |
| Bibliotheek | Secur32.lib |
| DLL | Secur32.dll |