通过身份验证-IIS虚拟目录

通过身份验证-IIS虚拟目录,iis,active-directory,windows-authentication,Iis,Active Directory,Windows Authentication,(Intranet)我正在尝试设置一个网站,该网站将提供来自网络共享(\\servername\folder\file)的文件。只有通过active directory组访问网络文件夹的用户才能通过网站下载文件 这是我现在的设置: 站点: AppPool:DefaultAppPool 身份验证:Windows身份验证 子网站: AppPool:DefaultAppPool 身份验证:Windows身份验证 虚拟目录: 物理路径:\\servername\Folder 物理路径凭据:应用程序用户

(Intranet)我正在尝试设置一个网站,该网站将提供来自网络共享(\\servername\folder\file)的文件。只有通过active directory组访问网络文件夹的用户才能通过网站下载文件

这是我现在的设置:

站点:

AppPool:DefaultAppPool

身份验证:Windows身份验证

子网站:

AppPool:DefaultAppPool

身份验证:Windows身份验证

虚拟目录:

物理路径:\\servername\Folder

物理路径凭据:应用程序用户(通过身份验证)

登录类型:明文

当我尝试使用如下链接导航到站点时,会反复提示我输入凭据,即使我输入的凭据应该是有效的。在虚拟目录设置中,如果我将其从pass-through更改为“specific user”,它可以工作,但会绕过active Directory组的安全性

我在这里配置的东西不正确吗


注意,我已经看过了

恐怕指定用户是实现这一点的唯一方法

我构建了一个共享文件夹,如\\server\shared。 在监视NTLM身份验证时,我还注意到,如果指定要通过的用户,则IIS将尝试使用大写\\SERVER\SHARED访问路径,并拒绝访问

但是,如果我为身份验证指定用户,NTLM工作正常,工作进程将不会执行相同的操作。我还注意到工作和非工作操作的用户标识是相同的


我在工作站和域环境中都试过了。但是,NTLM和Kerberos的结果是相同的。因此,我认为您可能需要接受特定用户作为解决方法。

恐怕指定用户是实现这一点的唯一方法

我构建了一个共享文件夹,如\\server\shared。 在监视NTLM身份验证时,我还注意到,如果指定要通过的用户,则IIS将尝试使用大写\\SERVER\SHARED访问路径,并拒绝访问

但是,如果我为身份验证指定用户,NTLM工作正常,工作进程将不会执行相同的操作。我还注意到工作和非工作操作的用户标识是相同的


我在工作站和域环境中都试过了。但是,NTLM和Kerberos的结果是相同的。因此,我认为您可能需要接受特定用户作为解决方法。

有两种不同的身份验证:

  • 用户正在对您的网站进行身份验证
  • IIS正在对文件共享进行身份验证
  • 这些是完全独立的行动

    我相信您遇到了:您可以使用用户的凭据在服务器上进行身份验证,但是(默认情况下)无法将这些凭据发送到其他服务器。为了实现这一点,您可能能够在Active Directory中设置Kerberos委派,这是一个很好的解决方案

    如果设置委派不是一个选项,那么您必须找到另一种方法将这些文件提供给用户

    我同意,如果您真的希望共享的共享权限决定谁可以通过站点下载文件,那么这是一个很难解决的问题。一个选项是直接链接到共享(如果用户的计算机可以通过网络访问服务器):

    
    
    这在IE中有效,但在Chrome中不起作用,因为Chrome专门禁用file://链接(除非您通过启用它)

    另一个更复杂的选项是通过管道将文件传输到应用程序中。您的应用程序可以访问该文件并枚举共享权限,以查看用户是否有访问权限,如果有,则允许下载。但是NTFS权限是出了名的难以通过


    或者干脆忽略共享权限,找到其他方法来确定此人是否应该拥有访问权限(例如,一个特定的安全组),而不是依赖共享权限。

    有两种不同的身份验证:

  • 用户正在对您的网站进行身份验证
  • IIS正在对文件共享进行身份验证
  • 这些是完全独立的行动

    我相信您遇到了:您可以使用用户的凭据在服务器上进行身份验证,但是(默认情况下)无法将这些凭据发送到其他服务器。为了实现这一点,您可能能够在Active Directory中设置Kerberos委派,这是一个很好的解决方案

    如果设置委派不是一个选项,那么您必须找到另一种方法将这些文件提供给用户

    我同意,如果您真的希望共享的共享权限决定谁可以通过站点下载文件,那么这是一个很难解决的问题。一个选项是直接链接到共享(如果用户的计算机可以通过网络访问服务器):

    
    
    这在IE中有效,但在Chrome中不起作用,因为Chrome专门禁用file://链接(除非您通过启用它)

    另一个更复杂的选项是通过管道将文件传输到应用程序中。您的应用程序可以访问该文件并枚举共享权限,以查看用户是否有访问权限,如果有,则允许下载。但是NTFS权限是出了名的难以通过


    或者干脆忽略共享权限,找到其他方法来确定此人是否应该拥有访问权限(例如,一个特定的安全组),而不是依赖共享权限。

    我是否在物理路径的开头看到
    \\
    ?这是另一台服务器上的路径吗?是的
    \\server\folder
    等。这是网络驱动器的UNC路径/folder是在域帐户下运行的应用程序池?现在它是用
    ApplicationPoolIdentity
    设置的,我相信这是一个本地计算机帐户,但即使我将其更改为域帐户,结果就是你试图让它使用creden
    <a href="file://servername/Folder/somefile.txt">Download</a>