0

我正在开发具有以下详细信息的客户端服务器应用程序:

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

服务器

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

客户

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

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

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

我试过以下:

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

问题

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

1 回答 1

3

你有没有尝试过

ServiceSecurityContext.Current.WindowsIdentity.Name

但是如果不涉及对 Active Directory 的查询,就无法转换用户名格式。既然是这种情况,就不需要创建 WindowsPrincipal 来检查组成员身份,因为这可能需要另一个与 AD 的连接。尝试使用 此链接中提供的解决方案

于 2013-12-03T12:47:50.597 回答