Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
Iis 7 IIS7 Windows 2008服务器上的典型ASP模拟问题_Iis 7_Asp Classic_Impersonation_Kerberos - Fatal编程技术网

Iis 7 IIS7 Windows 2008服务器上的典型ASP模拟问题

Iis 7 IIS7 Windows 2008服务器上的典型ASP模拟问题,iis-7,asp-classic,impersonation,kerberos,Iis 7,Asp Classic,Impersonation,Kerberos,我正在尝试从一个运行在IIS7(webadmin)上的Windows2008Serer上的经典asp站点写入服务器(web05)上的文件。此操作失败,web05会在保存操作过程中记录匿名登录尝试 Webadmin的站点以经典模式在应用程序池上运行,并以域用户作为进程帐户。流程帐户有权“信任此用户以委派给任何服务(仅限Kerberos)”。这同样适用于web05和webadmin服务器 该站点使用Windows身份验证,其理念是,当我使用域用户登录该站点时,用户的权限应定义允许我在IIS站点上下文

我正在尝试从一个运行在IIS7(webadmin)上的Windows2008Serer上的经典asp站点写入服务器(web05)上的文件。此操作失败,web05会在保存操作过程中记录匿名登录尝试

Webadmin的站点以经典模式在应用程序池上运行,并以域用户作为进程帐户。流程帐户有权“信任此用户以委派给任何服务(仅限Kerberos)”。这同样适用于web05和webadmin服务器

该站点使用Windows身份验证,其理念是,当我使用域用户登录该站点时,用户的权限应定义允许我在IIS站点上下文中执行的操作。如果启用基本身份验证,一切正常

我还使用setspn.exe为URL添加了一个SPN。如果我键入setspn.exe-L webadmin,我会得到:

HTTP/webadmin.companyname.com
TERMSRV/webadmin
TERMSRV/webadmin.companypub.local
HOST/webadmin
HOST/webadmin.companypub.local
因此,据我所知,SPN设置正确

如果我在执行保存操作时在webadmin上运行processmonitor,它会说该进程确实在模拟我的域用户,但“访问被拒绝”(正如我前面所说,web05记录匿名登录尝试)

知道这是什么原因吗

亲切问候,,
西蒙

我觉得你对模仿有点困惑。进程没有模拟域用户帐户,只是以该用户的身份运行。这是有区别的

当请求到达ASP时,它将模拟用户,处理该请求的线程将在模拟用户的安全令牌下运行。同一进程很可能在多个线程中模拟多个不同的用户。在大多数启用匿名用户访问的情况下,此用户是来宾级别的
IUSR
帐户。最有可能的情况是,您的代码在此用户下尝试运行,但未能运行

但是,如果正在访问的资源禁用了匿名,或者
IUSR
帐户没有访问该资源的权限,则会发送回a401响应,并指示它将接受哪些身份验证协议。然后,浏览器可能会尝试使用当前用户凭据验证连接,或者请求用户提供一些凭据

您没有确切指定如何保存文件。不过,有两点值得指出

  • ASP代码执行可能会导致访问被拒绝,但不会使用上述机制尝试解析用户
  • 一旦连接通过身份验证,它通常会继续被用于后续请求(这与HTTP是“无连接”协议的知识相反)

  • 我正试图澄清我之前的问题。这个答案不足以回答上述问题,但我的结论是,提供一些见解总比没有好。如果op不同意,请采取必要措施

    这是一种倒退,但我记得我想在这个应用程序上运行kerberos身份验证。问题是我试图在防火墙之外执行kerberos。该应用程序可以在服务器主域的域和防火墙内正常工作,但无论何时来自外部的请求都会失败

    我和微软的一位爱尔兰技术人员聊了很多天,他教了我一些使用Kerberos的局限性。我想使用Kerberos的原因是我不喜欢基本Windows身份验证不加密的想法


    祝您的Kerberos任务好运:-)

    我遇到了同样的问题,结果证明这是对应用程序池的一个简单更改。如果enable 32-bit applications设置为FALSE,那么我将收到登录到机器的提示。将此值设置为true修复了此问题。

    您完全正确地认为我对模拟感到困惑。所以,如果我回到起点,问自己我想做什么:我想让我的域用户通过身份验证,这样我就可以让经典ASP站点使用我的域用户凭据写入另一台服务器上的文件。我使用Windows身份验证的方式是否正确?未启用匿名身份验证。我正在尝试从ADODB流对象保存文件。FileSystemObject也会失败。是的,如果希望在客户端用户身份下完成活动,请关闭匿名访问,至少对包含代码的页面关闭匿名访问,并打开windows集成安全。假设用户拥有正确的权限,代码应该可以工作。这很好。但是,我已经关闭了匿名访问并打开了Windows身份验证。我可以使用我的域用户登录站点-该用户甚至可以对数据库访问进行身份验证(使用windows身份验证的系统dsn),但即使登录的用户具有相应的权限,我也无法在远程服务器上保存文件。有趣。希望我能测试一下。当我与MS技术人员一起解决这个问题时,他耐心地向我解释了为什么我的任务不起作用,因为kerberos在域外不起作用。显然,我的知识太薄弱,无法代表任何权威,因此任何输入都是有价值的。