我正在编写一个支持 Kerberos 的服务器,它需要接受来自客户端的委托凭据,模拟该客户端,并与充当客户端的远程服务器执行另一个 kerberos 对话。
目前,服务器使用 AcceptSecurityContext 完成与客户端的协商。在为标志调用 QuerySecurityContext 之后,它们指示 ASC_RET_DELEGATE 和 ASC_RET_MUTUAL_AUTH。然后我调用 ImpersonateSecurityContext 成功(SEC_E_OK)。
在这一点上,我有点不清楚该怎么做。作为客户端,我假设我应该调用没有 SEC_WINNT_AUTH_IDENTITY 结构的 AcquireCredentialsHandle 来获取当前“线程”的默认凭据,这应该是我刚刚模拟的那些。但是,此调用始终返回 SEC_E_NO_CREDENTIALS。
我似乎找不到任何执行此操作的代码示例,并且通过委托/模拟清单运行所有这些都表明在 Active Directory 中正确检查了“框”。
我应该做什么或者我做错了什么?我可以根据要求提供更多信息,只是不确定会是什么。