C SSPI:从以本地管理员权限运行的进程中获取另一个用户的凭据
我正在Windows中运行具有loacl admin权限的进程,并尝试使用AcquireCredentialsHandle为另一个用户获取凭据句柄。 可以使用用户信息(例如用户、域、密码)传入SEC_WINNT_AUTH_身份结构并获取句柄。我已经核实过了。如果没有SEC_WINNT_AUTH_标识,仅传递pszPrincipal将无法工作 我想知道有没有其他方法可以做到这一点,而不提供用户密码 我正在运行以下场景:C SSPI:从以本地管理员权限运行的进程中获取另一个用户的凭据,c,windows,single-sign-on,kerberos,sspi,C,Windows,Single Sign On,Kerberos,Sspi,我正在Windows中运行具有loacl admin权限的进程,并尝试使用AcquireCredentialsHandle为另一个用户获取凭据句柄。 可以使用用户信息(例如用户、域、密码)传入SEC_WINNT_AUTH_身份结构并获取句柄。我已经核实过了。如果没有SEC_WINNT_AUTH_标识,仅传递pszPrincipal将无法工作 我想知道有没有其他方法可以做到这一点,而不提供用户密码 我正在运行以下场景: 客户端使用UPN获取kerberos令牌并将其发送到服务器 服务器尝试使用客户
有什么建议吗?您通常不能代表其他用户申请票证。这将是一个非常危险的安全问题 有两种方法可以解决这个问题
系统运行
或拥有SeImpersonatePrivilege
才能执行此操作
SeImpersonatePrivilege
或SeTcbPrivilege
(意味着作为系统运行
)LsaLogonUser
,只传递用户名,返回NT令牌句柄SetThreadToken
AcquireCredentialsHandle
(使用默认SSO凭据)InitializeSecurityContext
谢谢你的解释@Steve。对于我的场景,首选的方式是什么?windows客户端希望访问Linux服务器上的服务。该服务正在以本地管理员身份运行。一旦用户通过身份验证,服务器将模拟该用户并作为模拟用户启动另一个程序。我们希望使用Kerberos。使用UPN登录和以本地管理员身份运行的服务(没有域帐户)在使用SSPI时不起作用?