使用App Pool Identity和User运行进程

时间:2013-10-10 10:42:13

标签: c# .net authentication iis active-directory

我想知道这是可能的还是可能的解决办法。我希望我的网站在IIS中运行 - 运行该网站的应用程序池将是一个可以查找AD的服务帐户。

要获取当前的App Pool帐户并设置Principal上下文,我有以下内容:

string appPoolAccount = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
// Define Context
PrincipalContext context = new PrincipalContext(ContextType.Domain);

现在用户将从自己的机器运行该站点 - 当他们在那里启动浏览器时,启动该过程的用户名将以'test123'为例 - 因为这将记录在用户中。

我需要得到的是userid他们正在运行浏览器,因此我可以执行类似下面的操作(第二个参数将是运行我找到的进程的用户的字符串):

UserPrincipal user = UserPrincipal.FindByIdentity(context , 'test123');

到目前为止,我已尝试从以下位置获取该用户字符串:

string test = Environment.UserName; //Took the App Pool Account
WindowsIdentity wi = WindowsIdentity.GetCurrent(); // Took App Pool account
string test = HttpContext.Current.User.Identity.Name; //bombed out as null

1 个答案:

答案 0 :(得分:2)

此代码应该可以使用,但您已在Web.Config中启用Windows身份验证并禁用匿名身份验证。

if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
{
   string username = System.Web.HttpContext.Current.User.Identity.Name;
}