Ssh 如何在给定Kerberos票证的情况下在服务器上登录用户并运行进程
身份验证和登录如何在使用Kerberos的Windows上工作?我想要实现的是在服务器上登录一个用户并为该用户运行一个进程 作为第一步,我在客户机上创建一个Kerberos票证并将其发送到服务器。在服务器上,我不知道给用户提供票证的用户登录的API。 当然,我可以使用AcceptSecurityContext(SSPI)接受安全上下文,但这不会启动登录Ssh 如何在给定Kerberos票证的情况下在服务器上登录用户并运行进程,ssh,kerberos,windows-authentication,gssapi,sspi,Ssh,Kerberos,Windows Authentication,Gssapi,Sspi,身份验证和登录如何在使用Kerberos的Windows上工作?我想要实现的是在服务器上登录一个用户并为该用户运行一个进程 作为第一步,我在客户机上创建一个Kerberos票证并将其发送到服务器。在服务器上,我不知道给用户提供票证的用户登录的API。 当然,我可以使用AcceptSecurityContext(SSPI)接受安全上下文,但这不会启动登录 我认为一些针对Windows的SSH实现正是这样做的。但我想知道他们可能如何使用以及使用什么API?有几种方法可以做到这一点。您确实需要在票据上
我认为一些针对Windows的SSH实现正是这样做的。但我想知道他们可能如何使用以及使用什么API?有几种方法可以做到这一点。您确实需要在票据上调用
AcceptSecurityContext
,以获取安全上下文。这就是在Windows中引导一切的原因。从那里你可以做一些不同的事情
通常您调用ImpersonateSecurityContext
,以便当前线程了解它认为需要的用户。之后,您可以调用QuerySecurityContextToken
以获取Windows访问令牌句柄。然后使用此句柄调用CreateProcessAsUser
。如果需要,您还可以告诉它执行加载配置文件之类的操作
这并不像
LogonUserX
那样进行登录,但它有效地启动了一个用户的过程,这通常是人们希望完成的任务。感谢您的回答。到目前为止,它与CreateProcessAsUser
一起工作,一个新的进程开始以用户身份运行。但是,它无法与不同服务器上的其他服务(例如REST API)通信。无法为其他服务创建新票证(使用AquireCredentialsHandle
和InitializeSecurityContext
),我收到一个错误:“安全包中没有可用的凭据”。我可以在ImpersonateSecurityContext
之后和创建新流程之前在服务中创建新票据(委派)。但这不是我想要的。在新流程中可以这样做吗?是的,在该场景中还需要一个步骤,那就是配置父流程正在运行的帐户以允许委派和模拟。因此client=>server=>child进程
,这意味着server
进程正在以用户身份运行,并且该用户必须配置了模拟和委托。它似乎可以处理无约束的委托。您知道这种方法是否适用于受约束的委派(其中TGT不随服务票证一起发送以用于委派目的)。