【问题标题】:Asp.net Windows Authentication Deny Anonymous AccessAsp.net Windows 身份验证拒绝匿名访问
【发布时间】:2019-11-27 01:09:28
【问题描述】:

当我 RDP 到 Web 服务器(客户)时,我输入我的用户名作为域/用户名。这告诉我我在 AD 中。 我设置了 web.config authentication mode="Windows" 和 Authorization deny="?" (我的理解是,这意味着拒绝所有未经 Windows 认证的人。) 然后我试图打开一个测试页面(test.aspx)。我得到拒绝访问。 如果我将授权设置为允许用户 =“*”,则页面打开。但是 environment.UserDomainName 返回“IIS APPPOOL”。我想看看 environment.UserDomainName 会返回实际的域名。 我需要做什么?或者我错过了什么?

【问题讨论】:

  • 我似乎无法获取当前用户名。我可以得到域名。我得到的域名如下(作品): Environment.UserDomainName;但是当我尝试获取用户名(下面的所有方法)时,我得到的是服务器名而不是用户名:Environment.UserName;系统.环境.用户名; Environment.GetEnvironmentVariable("USERNAME"); web.config 有: 或“false”,没有区别。 IIS 中的站点已将 Windows 身份验证和匿名身份验证设置为启用。

标签: asp.net windows authentication


【解决方案1】:

如果我理解您的问题,那么您正在尝试获取当前用户。如果是这样,你可以使用这样的东西:

string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

【讨论】:

  • 以下行实际上给了我记录的用户名:HttpContext.Current.Request.LogonUserIdentity.Name;其他重要设置应该是: 在 web.config 中: 谢谢。 PS我希望我能理解如何使代码显示为代码。
  • 根据您的其他评论,您想获取当前用户名。这就是我要回答的问题。现在您最初的问题是获取用户域名。现在看来你已经实现了两者。所以现在您正在寻找可以阻止访问被拒绝问题的某些设置?
  • 我会在了解如何在评论中显示代码后回复您的问题。我想显示代码,但它都以文本形式出现。
  • 如果您想发布代码,请在代码的开头和结尾使用反勾号(ESC 键下的键)。像这样:string s = "testing";.
  • 在我的代码中,我正在寻找基于域帐户名的用户电子邮件地址。以下是代码:string CurrentUserDomain = HttpContext.Current.Request.LogonUserIdentity.Name; PrincipalContext ctx = new PrincipalContext(ContextType.Domain); UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, CurrentUserDomain); if (user != null) { lblEmail.Text = user.EmailAddress; } 感谢您在后面打勾的建议。太糟糕了,我不知道如何让每一行出现在单独的行上。
猜你喜欢
  • 2018-01-06
  • 2011-04-06
  • 2015-12-05
  • 2018-12-17
  • 2019-12-12
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多