0

我正在尝试使用 C# 在 ASP.NET 中构建一个简单的 Web 应用程序。此应用程序的目的是获取用户 Windows 帐户登录的 guid。

预期效果是用户在他或她自己的 Windows 机器上尝试登录到该站点。服务器查看用户的凭据,并为他或她自己的网络上的 Windows 登录拉取 guid。然后根据数据库检查 guid,如果它与我们之前存储的匹配,我们对它们进行身份验证并重定向。我遇到的问题是,我尝试获取的任何凭据(如果我什至可以获得任何凭据)始终是服务器的凭据,而不是远程用户的凭据。

在 中web.config,我尝试过设置authentication mode = "windows"、拒绝匿名用户和设置identity impersonate="true". 我也尝试了这些的许多排列。

既没有HTTPContext也没有 User.Identity返回任何东西。WindowsIdentity.GetCurrent()以及任何通过System.Security.Principal返回服务器的凭据。

但是,这确实适用于我的localhost. 每当我将它发布到外部 IIS 服务器时,它都会失败。

我想要做的就是获取远程用户 Windows 登录的 guid。甚至有可能这样做吗?如果是这样,任何为我指明正确方向的帮助将不胜感激。

谢谢!

4

1 回答 1

0

以下内容来自msdn。我不知道这是否对你有帮助。

在 .Net 3.5 中,在 System.DirectoryServices.AccountManagement 命名空间下引入了 UserPrinciple 类。它具有获取当前 UserPrinciple 和从中获取 Guid 的属性。

例子:

using System.DirectoryServices.AccountManagement;
Guid currentGuid = UserPrincipal.Current.Guid;
于 2013-02-26T22:06:11.640 回答