Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
域登录,asp.net_Asp.net_Authentication_Kerberos - Fatal编程技术网

域登录,asp.net

域登录,asp.net,asp.net,authentication,kerberos,Asp.net,Authentication,Kerberos,我需要澄清如何在我的asp.net应用程序中应用域登录 所以我有以下体系结构:三台机器:一台运行asp.net应用程序,另一台运行数据库服务器,从最后一台机器访问应用程序 我的应用程序应该是这样工作的:我从最后一台机器访问应用程序,它检查我的域名是否存在于用户表中,它应该对我进行身份验证。 但只有当应用程序在一台机器上运行并且我从同一台机器访问应用程序时,它才起作用。它与web.config文件中的模拟连接,仅允许我访问本地资源 我在MSDN上找到了一些文章,但它们太复杂,无法应用和理解:

我需要澄清如何在我的asp.net应用程序中应用域登录

所以我有以下体系结构:三台机器:一台运行asp.net应用程序,另一台运行数据库服务器,从最后一台机器访问应用程序

我的应用程序应该是这样工作的:我从最后一台机器访问应用程序,它检查我的域名是否存在于用户表中,它应该对我进行身份验证。 但只有当应用程序在一台机器上运行并且我从同一台机器访问应用程序时,它才起作用。它与web.config文件中的模拟连接,仅允许我访问本地资源

我在MSDN上找到了一些文章,但它们太复杂,无法应用和理解:

  • 如何:为ASP.NET 2.0应用程序创建服务帐户
  • 构建安全的ASP.NET应用程序:身份验证、授权、, 安全通信
从这些文章中,我知道解决方案应该使用kerberos、委派和模拟。但我不知道如何应用它

在我的应用程序中实现域登录需要做什么?你有一个很好的教程怎么做?我是否只需要修改我的应用程序代码或服务器配置(第二台机器)

更新1

我记录了一些信息:

在我的机器上:

System.Security.Principal.WindowsIdentity.GetCurrent().Name
System.Security.Principal.WindowsIdentity.GetCurrent().Name
返回:[myDomainName][myUserName]

System.Security.Principal.WindowsIdentity.GetCurrent().AuthenticationType
返回:Kerberos

在三台机器架构上:

System.Security.Principal.WindowsIdentity.GetCurrent().Name
System.Security.Principal.WindowsIdentity.GetCurrent().Name
返回:[IIS APPPOOL][ApplicationName]

System.Security.Principal.WindowsIdentity.GetCurrent().AuthenticationType

返回:协商

您需要设置ASP.Net以使用Windows Authentication和impersonation(听起来您已经这样做了)。然后,需要为kerberos委派设置web服务器,并确保为IIS和应用程序服务器配置了正确的spn

它在2机器的情况下工作,因为那里没有委托关系。这是需要kerberos的第二个身份验证跃点