gpt4 book ai didi

c# - 如何在 asp.net 中使用 Windows 身份验证获取用户名?

转载 作者:IT王子 更新时间:2023-10-29 04:32:48 32 4
gpt4 key购买 nike

我想使用 Windows 身份验证获取用户名

实际上我实现了“以不同用户身份登录”,当单击此按钮时,Windows 安全将出现在那里,我们可以提供凭据。

那时,如果我提供一些其他凭证,它只会使用当前用户名。如何从 windows 安全中获取给定的凭据用户名?

IIS 中的主机应用程序然后禁用匿名身份验证并启用 Windows 身份验证。

web.config:

<system.web>
<compilation debug="true" targetFramework="4.0" />
<identity impersonate="true"/>
<authorization>
<allow users="*"/>
<deny users="*"/>
</authorization>
</system.web>
<system.webServer>
<directoryBrowse enabled="true" />
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>

.cs

在这里我总是得到默认的用户名

string fullName = Request.ServerVariables["LOGON_USER"];

有什么想法吗?提前致谢

最佳答案

这些是您有权访问的不同变量及其值,具体取决于 IIS 配置。

场景 1:IIS 中的匿名身份验证并关闭模拟。

HttpContext.Current.Request.LogonUserIdentity.Name    SERVER1\IUSR_SERVER1 
HttpContext.Current.Request.IsAuthenticated False
HttpContext.Current.User.Identity.Name –
System.Environment.UserName ASPNET
Security.Principal.WindowsIdentity.GetCurrent().Name SERVER1\ASPNET

场景 2:IIS 中的 Windows 身份验证,模拟关闭。

HttpContext.Current.Request.LogonUserIdentity.Name    MYDOMAIN\USER1   
HttpContext.Current.Request.IsAuthenticated True
HttpContext.Current.User.Identity.Name MYDOMAIN\USER1
System.Environment.UserName ASPNET
Security.Principal.WindowsIdentity.GetCurrent().Name SERVER1\ASPNET

场景 3:IIS 中的匿名身份验证,模拟

HttpContext.Current.Request.LogonUserIdentity.Name    SERVER1\IUSR_SERVER1 
HttpContext.Current.Request.IsAuthenticated False
HttpContext.Current.User.Identity.Name –
System.Environment.UserName IUSR_SERVER1
Security.Principal.WindowsIdentity.GetCurrent().Name SERVER1\IUSR_SERVER1

场景 4:IIS 中的 Windows 身份验证,模拟

HttpContext.Current.Request.LogonUserIdentity.Name    MYDOMAIN\USER1
HttpContext.Current.Request.IsAuthenticated True
HttpContext.Current.User.Identity.Name MYDOMAIN\USER1
System.Environment.UserName USER1
Security.Principal.WindowsIdentity.GetCurrent().Name MYDOMAIN\USER1

传说
SERVER1\ASPNET:服务器上正在运行的进程的标识。
SERVER1\IUSR_SERVER1:IIS 中定义的匿名 guest 用户。
MYDOMAIN\USER1:远程客户端的用户。

Source

关于c# - 如何在 asp.net 中使用 Windows 身份验证获取用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19676312/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com