我如何在.NET中处理Negotiate?
我正在尝试在小型Web服务器中实现Negotiate(至少是Kerberos部分)。 我已经想出如何让客户端向我发送Kerberos Negotiate Authorization标头。 我已经弄清楚如何解码这些数据(ASN.1)。 我无法弄清楚如何将其变成WindowsIdentity
。 我可以从KerberosReceiverSecurityToken
中了解我的情况,但是找不到像NegotiateReceiverSecurityToken
这样的东西。 我一直在挖掘大量的DLL,我不能为我的生活找出IIS / .NET处理Negotiate标头的地方。
我假设(如果我有自己的SspiWrapper
)我会用SspiWrapper.AcquireDefaultCredential("Negotiate", CredentialUse.Inbound)
做一些事情来获取一个SSPI上下文,我可以用它来调用AcceptSecurityContext/Negotiate
,然后使用QuerySecurityContextToken
来获取令牌我可以创建一个WindowsIdentity
。
但是KerberosReceiverSecurityToken
使得它看起来像一个非常复杂的过程。 并且不知道如何做到这一点或授权头部有效负载的哪一部分放入其中,我可能会在没有任何地方的情况下击败它一个月。
(在你提出或回答之前,我完全没有兴趣使用内置的谈判逻辑。如果我能找到它,我会从中学习,但我一直在努力让它为FAR工作很久。而我完成了。)
- 解析传入的响应令牌
- 调用
Secur32.AcquireCredentialsHandle
获取句柄 - 调用
Secur32.AcceptSecurityContext
传递句柄和令牌 - 调用
Secur32.QuerySecurityContextToken
传递安全上下文 - 使用输出表单步骤4构造
new WindowsIdentity(hToken)
如果您对任何这些步骤有任何疑问,我可以详细说明和/或提供一些示例代码。
上述就是C#学习教程:我如何在.NET中处理Negotiate?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/987357.html