我们在 Win Server 2008 R2 上的 IIS 7.5 下使用 PHP 成功运行了企业内联网。我们使用 Web 平台安装程序来设置 PHP。模拟从一开始就起作用,但未配置委派。
据我了解,“模拟”(有时称为单跳)从客户端工作站获取访问令牌,并使用它运行 Web 服务器(即第一跳)上的脚本。当应用程序想要读取/写入网络文件共享上的文件时,问题就出现了。据我进一步了解,“委托”(有时称为“双跳”)采用相同的访问令牌并将其传递给 Web 服务器(第二跳)以用于访问远程文件。委托不起作用。我在很多地方都看到委托是我需要的,但找不到有关如何在 IIS 7.5 中启用它的说明。
答案1
委派的工作方式不同,具体取决于您运行的是工作组/域和本地/域帐户还是证书。我假设您运行一个域并希望使用 Kerberos 委派。
如果确实如此,则必须启用您的应用程序所运行的帐户,以便在 Active Directory 中“信任委派”(打开 ADUC(如果运行服务器 2012,则打开 ADAC),导航到帐户 -> 属性 -> 委派选项卡,然后启用完全或受限委派)。
只有具有已注册 SPN 的域帐户才可以被信任进行委派。内置计算机帐户默认会注册 SPN,但如果您使用常规用户帐户,则必须先为您的 Web 应用程序和帐户注册 SPN,然后才能启用其信任进行委派(缺少已注册 SPN 的帐户不会显示“委派”选项卡)。
将应用程序帐户从 IIS 创建的默认虚拟帐户“IIS AppPool\applicationName”更改为 NetworkService(如果您决定使用计算机帐户)或新创建的用户帐户(如果您选择该路径)。
确保您的应用程序配置为使用 Windows 身份验证。Windows 身份验证使用 NTLM 或 Kerberos,只有 Kerberos 支持委派,因此您必须拥有 SPN,否则 NTLM 将用于身份验证并且它将不起作用。