Asp.net mvc 4 根据用户是否具有Active Directory帐户,自动将用户登录到现有的ASP.NET MVC 4 web应用

Asp.net mvc 4 根据用户是否具有Active Directory帐户,自动将用户登录到现有的ASP.NET MVC 4 web应用,asp.net-mvc-4,active-directory,iis-10,Asp.net Mvc 4,Active Directory,Iis 10,我希望有人能帮我解决以下问题,因为我已经在网上搜索了好几天,但都没有成功 我面临的情况是,如果用户存在于Active Directory(AD)中,如何自动绕过登录屏幕并直接转到仪表板?如果用户不存在,即用户没有Active Directory(AD)帐户,请将用户重定向到登录页面 附件是一张更好地解释过程的图片 如果我使用“IIS Express”运行ASP.NET MVC 4 web应用程序,则用户名和域正确,并且我会自动登录,因为我的凭据正确,例如: username => "

我希望有人能帮我解决以下问题,因为我已经在网上搜索了好几天,但都没有成功

我面临的情况是,如果用户存在于Active Directory(AD)中,如何自动绕过登录屏幕并直接转到仪表板?如果用户不存在,即用户没有Active Directory(AD)帐户,请将用户重定向到登录页面

附件是一张更好地解释过程的图片

如果我使用“IIS Express”运行ASP.NET MVC 4 web应用程序,则用户名和域正确,并且我会自动登录,因为我的凭据正确,例如:

username   => "username"
domain     => "domain"
但如果在“本地IIS”上运行解决方案,则凭据不正确,因为IIS使用以下凭据登录:

web.config setting (identity impersonate="false")
username   => "NT AUTHORITY\\IUSR"
domain     => "IIS APPPOOL"

web.config setting (identity impersonate="true")
username   => "NT AUTHORITY\\IUSR"
domain => "NT AUTHORITY"
[15/11/2017]更新

它似乎在UserPrincipal.FindByIdentity上失败了,因为我内置了基本日志,所以我可以更好地了解它在服务器上失败的地方

我得到的错误是“发生了操作错误”

感兴趣的IIS中的设置如下所示:

Anonymous Authentication    = Disabled
ASP.NET Impersonation       = Enabled
Basic Authentication        = Disabled
Forms Authentication        = Disabled
Windows Authentication      = Enabled
Anonymous Authentication    = Disabled
ASP.NET Impersonation       = Disabled
Basic Authentication        = Disabled
Forms Authentication        = Disabled
Windows Authentication      = Enabled
“应用程序池”高级设置

Enable 32-Bit Applications  = True
Identity                    = NetworkService
Enable 32-Bit Applications  = True
Identity                    = NetworkService
网站认证设置如下所示:

Anonymous Authentication    = Disabled
ASP.NET Impersonation       = Enabled
Basic Authentication        = Disabled
Forms Authentication        = Disabled
Windows Authentication      = Enabled
Anonymous Authentication    = Disabled
ASP.NET Impersonation       = Disabled
Basic Authentication        = Disabled
Forms Authentication        = Disabled
Windows Authentication      = Enabled
[16/11/2017]更新

关闭IIS中的模拟,并将标识设置为ApplicationPoolIdentity

以下是我创建的日志文件中的值:

[2017-11-16 07:17:52 AM]    Windows username    => username (e.g. jdoe)
[2017-11-16 07:17:52 AM]    Domain              => IIS APPPOOL
[2017-11-16 07:21:18 AM]    Windows username    => username (e.g. jdoe)
[2017-11-16 07:21:18 AM]    Domain              => IIS APPPOOL
[2017-11-16 07:23:38 AM]    Windows username    => username (e.g. jdoe)
[2017-11-16 07:23:38 AM]    Domain              => IIS APPPOOL
[16/11/2017]解决方案

“应用程序池”高级设置

Enable 32-Bit Applications  = True
Identity                    = NetworkService
Enable 32-Bit Applications  = True
Identity                    = NetworkService
网站认证设置如下所示:

Anonymous Authentication    = Disabled
ASP.NET Impersonation       = Enabled
Basic Authentication        = Disabled
Forms Authentication        = Disabled
Windows Authentication      = Enabled
Anonymous Authentication    = Disabled
ASP.NET Impersonation       = Disabled
Basic Authentication        = Disabled
Forms Authentication        = Disabled
Windows Authentication      = Enabled
干杯


Tim在本地ISS中启用Windows身份验证。


这应该可以解决您在本地ISS上遇到的问题。

谢谢Sychal,我这么做了,它在我的“本地IIS”上运行得非常好,但是当我在服务器上设置相同的设置时,它似乎仍然不起作用。。。快乐的日子:-(.Howzit Sychal请查看我的最新帖子,特别是有关IIS应用程序池和网站身份验证设置的部分。尝试关闭IIS中的模拟。我通常也会将身份设置为ApplicationPoolIdentity(有关此项的更多信息,请参见此处:)酷,我会试试,看看它是否解决了我的问题。但是Synchal仍然没有成功,请在IIS中关闭模拟并将身份设置为ApplicationPoolIdentity时查看我的更新帖子。