Я пытаюсь реализовать Negotiate (по крайней мере, часть Kerberos) на небольшом веб-сервере. Я выяснил, как заставить клиента отправлять мне заголовок авторизации Kerberos Negotiate. Я понял, как декодировать эти данные (ASN.1). Я не могу понять, как превратить это в WindowsIdentity
. Я могу получить общее представление о том, как я могу, из _ 2_, но я не могу найти ничего похожего на NegotiateReceiverSecurityToken
. Я копался в большом количестве DLL, и я не могу понять, где IIS / .NET обрабатывает заголовок Negotiate.
Я предполагаю (если бы у меня был собственный SspiWrapper
), что я бы сделал что-нибудь с SspiWrapper.AcquireDefaultCredential("Negotiate", CredentialUse.Inbound)
, чтобы получить контекст SSPI, с которым я мог бы вызвать _ 6_, а затем используйте _ 7_, чтобы получить токен, с помощью которого я мог бы создать WindowsIdentity
.
Но KerberosReceiverSecurityToken
делает это чрезвычайно сложным процессом. И не имея никакого представления о том, как это сделать или какую часть полезной нагрузки заголовка авторизации поместить в него, я, вероятно, мог бы биться головой об этом в течение месяца, ни к чему не придя.
(Прежде чем вы спросите или ответите, я абсолютно не заинтересован в использовании встроенной логики переговоров. Если бы я нашел ее, я бы извлек из нее уроки, но я долго пытался заставить ее работать в FAR. И я с этим покончено.)