我正在开发具有以下详细信息的客户端服务器应用程序:
Client(C++) -----------HTTPS--- Server (C#/WCF)
服务器:
- 与 Windows Active Directory 域中的用户
- 在 IIS 中运行的 WCF 服务提供针对 Windows AD 的身份验证服务
- 提供基于 REST 的身份验证 API,它使用 Windows API logonUser。
客户:
- 客户端使用 REST SDK(基于 Visual Studio 2013)连接服务器
- 客户端提供身份验证 API 以使用 HTTPS 进行身份验证。
目前我正在努力验证在服务器上登录客户端的 Windows 用户:
- AD用户登录客户端调用认证API
- 必须使用 HTTPS 将当前登录的用户详细信息发送到服务器(当然只有用户名)
- 使用从客户端检索到的信息创建 WindowsIdentity 结构。
我试过以下方法:
- 从客户端获取 SID 并将其传递给服务器。从客户端登录的 SID 重新创建 WindowsIdentity。
- 我无法从传递的 SID 中获取 WindowsIdentity。
问题:
- 如何从客户端传递的已登录 AD 用户的 SID 中获取服务器 (C#) 中的 Windows 身份?
- 是否有其他更好的方法来实现上述设置?
最佳答案
你试过吗
ServiceSecurityContext.Current.WindowsIdentity.Name
但如果不涉及对 Active Directory 的查询,就无法转换用户名格式。由于是这种情况,因此无需创建 WindowsPrincipal 来检查组成员身份,因为这可能需要与 AD 的另一个连接。 尝试使用 this link 中提供的解决方案
关于c# - 如何获取远程登录用户的 WindowsIdentity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20351565/