在使用Kerberos的Windows上,身份验证和登录如何工作?我要实现的是在服务器上登录用户并为该用户运行一个进程。
首先,我在客户端上创建Kerberos票证并将其发送到服务器。在服务器上,我不知道用于给用户提供凭单的用户登录的API。 当然,我可以使用AcceptSecurityContext(SSPI)接受安全上下文,但是不会启动登录。
我认为Windows的某些SSH实现可以做到这一点。但是我想知道他们可能以及如何使用什么API?
答案 0 :(得分:1)
有几种方法可以执行此操作。您确实需要在票证上致电AcceptSecurityContext
以获得安全上下文。这就是引导Windows中所有内容的原因。从那里您可以做几件事。
通常,您调用ImpersonateSecurityContext
,以便当前线程了解它认为需要的用户。之后,您可以调用QuerySecurityContextToken
获取Windows访问令牌句柄。使用此句柄,然后调用CreateProcessAsUser
。您还可以告诉它执行必要的操作,例如在需要时加载配置文件。
这实际上并没有像LogonUserX
那样进行登录,但是它实际上以该用户身份启动了一个过程,这通常是人们希望完成的过程。