如何为远程登录用户获取WindowsIdentity?

时间:2013-12-03 12:44:58

标签: c# c++ wcf authentication windows-identity

我正在处理客户端服务器应用程序,其中包含以下详细信息:

Client(C++) -----------HTTPS---     Server (C#/WCF)

服务器

  • 使用Windows Active Directory域中的用户
  • 在IIS中运行的WCF服务,提供针对Windows AD的身份验证服务
  • 提供基于REST的身份验证API,该API使用Windows API logonUser。

客户端

  • 客户端使用REST SDK(基于Visual Studio 2013)连接服务器
  • 客户端使用HTTPS提供身份验证API进行身份验证。

目前,我正在验证在服务器上的客户端登录的Windows用户:

  • AD用户登录到客户端并调用身份验证API
  • 当前登录的用户详细信息必须使用HTTPS(当然只有用户名)
  • 发送到服务器
  • 使用从客户端检索的信息创建WindowsIdentity结构。

我试过以下:

  • 从客户端计算机获取SID并将其传递给服务器。从客户端登录的SID重新创建WindowsIdentity。
    • 我无法通过SID获得WindowsIdentity。

问题

  1. 如何从客户端传入的已登录AD用户的SID获取服务器(C#)中的Windows身份?
  2. 还有其他更好的方法可以实现上述设置吗?

1 个答案:

答案 0 :(得分:3)

你试过吗

ServiceSecurityContext.Current.WindowsIdentity.Name

但无法在不涉及Active Directory查询的情况下转换用户名格式。由于这种情况,因此无需创建WindowsPrincipal来检查组成员身份,因为这可能需要另一个与AD的连接。  尝试使用this link

中提供的解决方案
相关问题