Erstellen eines Schannel-Sicherheitskontexts
Um einen Sicherheitskontext einzurichten, der die Kommunikation zwischen einem Client und server schützt, müssen beide am folgenden Informationsaustauschprozess teilnehmen:
Client
- Der Client ruft die Funktion InitializeSecurityContext (General) auf.
- Schannel beginnt mit der Erstellung eines Sicherheitskontexts gemäß den Regeln des ausgewählten Sicherheitsprotokolls. Der Rückgabecode der Funktion gibt an, ob der Client die Funktion erneut aufrufen muss. InitializeSecurityContext (Allgemein) gibt möglicherweise ein Token zurück, das den Kontext darstellt.
- Wenn ein Token zurückgegeben wurde, sendet es der Client an den Server.
- Wenn InitializeSecurityContext (Allgemein) SEC_E_OK zurückgibt, ist der Client fertig. Wenn die Funktion SEC_I_CONTINUE_NEEDED zurückgibt, muss der Client warten, bis der Server ein Token sendet. Wenn der Client über das Token vom Server verfügt, muss er die Funktion InitializeSecurityContext (General) erneut aufrufen. (Kehren Sie zu Schritt 2 zurück.)
Server
- Der Server wartet, bis ein Client eine Nachricht sendet, die ein Sicherheitstoken enthält. Der Server übergibt das vom Client empfangene Token an die Funktion AcceptSecurityContext (Allgemein).
- Schannel baut auf dem teiliellen Sicherheitskontext auf, der durch das Token dargestellt wird. Schannel gibt ein Token an den Server und einen Rückgabecode zurück, der angibt, ob der Server die Funktion erneut aufrufen muss.
- Wenn ein Token zurückgegeben wurde, sendet es der Server an den Client.
- Wenn AcceptSecurityContext (Allgemein) SEC_E_OK zurückgibt, ist der Server fertig. Wenn die Funktion SEC_I_CONTINUE_NEEDED zurückgibt, muss der Server warten, bis der Client ein Token sendet. Wenn der Server über das Token vom Client verfügt, muss er die AcceptSecurityContext -Funktion (Allgemein) erneut aufrufen. (Kehren Sie zu Schritt 2 zurück.)
Wenn eine Funktion einen anderen Wert als SEC_E_OK, SEC_I_CONTINUE_NEEDED oder SEC_E_INCOMPLETE_MESSAGE zurückgibt (siehe folgenden Absatz), ist ein Fehler aufgetreten. Client und Server sollten die DeleteSecurityContext-Funktion aufrufen, um den teilweise eingerichteten Sicherheitskontext zu löschen.
Ein Sonderfall, der die Client- und Serververarbeitung ändern kann, ist, wenn von der anderen Partei zu wenig oder zu viele Informationen an den Client oder Server gesendet werden. Bei zu wenig Informationen geben beide Funktionen SEC_E_INCOMPLETE_MESSAGE zurück. Informationen zum Erkennen und Behandeln unzureichender oder überschüssiger Informationen finden Sie unter Von Schannel zurückgegebene zusätzliche Puffer.
Zugehörige Themen