3

我在 Kerberos 登录基础架构(单点登录)上工作:

  1. 经过 Kerberos 密钥分发中心身份验证的客户端。
  2. 使用 Kerberos 作为身份验证的主体服务服务器。

服务器程序是用 C++ 编写的。

在我的主体(客户端)和我的服务主体(服务器)之间创建上下文没有问题。我还将客户端凭据委托给服务器,因为我需要使用客户端用户凭据在服务器上创建一个进程。

这是我的问题,在服务器端,我有一个 SSPI 上下文,我需要使用 Windows 类型 CreateProcessAsUser pHandle

我不知道如何使用我的 SSPI 凭据在我的服务器上创建一个作为客户端用户的进程。

我看一下 LsaLogonUser,它似乎做了我想做的事(从 kerberos 用户凭据创建句柄),但我的问题是一样的,我不知道如何将 SSPI 令牌与这个 LsaLogonUser 一起使用。

在此先感谢您的帮助

4

3 回答 3

1

虽然已经很晚了,但是您可以通过以下操作获得令牌:

HANDLE tempHandle;
 if (!QuerySecurityContextToken(hctxt, &tempHandle))
 {
   MyDbg("Could not obtain token for user");
 }
于 2020-06-11T17:41:34.780 回答
0

我刚刚发布了一个与您正在做的事情有关的问题。我正在使用会话 0 Windows 服务将应用程序启动到会话 1。我使用(并询问)的代码包含在该帖子中,并且运行良好,除了会话 1 中用户通常可用的路径在启动时无法访问这边走。无论如何,即使我对这段代码有一些疑问,我希望它能让你走上正确的道路。

瑞克

于 2013-06-18T20:41:48.050 回答
0

我终于找到了解决我的问题的方法。

最好的方法是:

  1. 在临时文件中写入委托凭证。
  2. 将 KRB5CCNAME 环境变量设置为此文件的路径。

有用 ;)

于 2014-02-05T17:40:07.050 回答