gpt4 book ai didi

authentication - 在带有 Windows Server 2008 的 IIS 7 上使用委派设置 Kerberos 身份验证

转载 作者:行者123 更新时间:2023-12-04 18:09:31 37 4
gpt4 key购买 nike

情况:

我在我的 Web 服务器上部署了一个 .NET asmx Web 服务。此服务调用另一台服务器(我们的 SharePoint 服务器,如果相关)上的服务。我想使用客户端的凭据模拟/委派从我的 Web 服务对 SharePoint 服务的调用。

问题:

当我调用 MY Web Service 并且它调用 SharePoint 时,我从 SharePoint 服务收到了 401 响应。

设置:

  • 我的 Web 服务器正在运行 IIS 7。应用程序池正在“网络服务”下运行
  • 在我的 Windows Server 2003 域 Controller 上,Web 服务器启用了“受信任的委派(仅限 Kerberos)”。
  • 在 ISS 我的应用程序禁用匿名身份验证、启用模拟和启用 Windows 身份验证并启用所有三个提供程序(协商:Kerberos、协商和 NTLM)
  • SharePoint 服务器设置为启用匿名、启用模拟和启用 Windows 身份验证,并启用仅提供程序 NTLM。

  • 我可以在 SharePoint 日志中看到,当我在 Visual Studio 中本地运行时,用户名正在传递(并且服务正常工作),但是当我在 Web 服务器上运行它时,日志文件中没有用户名,并且出现 401 错误

    我为使 Kerberos 委派工作而设置的错误是什么?

    想法?谢谢!

    最佳答案

    平台:

    使用 IIS7 这是我在两台服务器上所做的。我们希望 Kerberos 身份验证“跳跃”到的第一台服务器和第二台服务器。

    第一步:

    对于包含您正在调用的服务(在每台服务器上)的 IIS 站点,请进入 IIS 管理器,单击连接下左侧的站点,然后打开 IIS 下的“身份验证”部分。将“ASP.NET Impersonation”设置为启用,将“Windows 身份验证”设置为启用。身份验证下的所有其他选项(匿名、表单等)应设置为禁用。

    在“Windows 身份验证”下右键单击并选择“提供程序”。将唯一的提供程序设置为“Negotiate:Kerberos”(这会强制 Kerberos。如果您愿意,在让 Kerberos 工作后,您可以同时使用“Negotiate”和“NTLM”提供程序并删除“Negotiate:Kerberos”,以便客户端无法做 Kerberos 可以连接。注意:我目前将我的设置为“协商”和“NTLM”,它似乎工作)

    在“Windows 身份验证”下右键单击并选择“高级设置”。取消选中“启用内核模式”框。 (我的扩展保护选项设置为关闭,没有尝试其他任何东西)

    第 2 步:

    您必须为每个服务器设置 SPN。 SPN 如下(A 或 B):

    答:

    如果您的应用程序池在作为域帐户的 IDENTITIY 下运行,请将以下 SPN 添加到域 Controller 上的该域帐户

    http/COMPUTER_NETBIOS_NAME 
    http/COMPUTER_NETBIOS_NAME.FULLY_QUALIFIED_DOMAIN_NAME
    http://COMPUTER_NETBIOS_NAME.FULLY_QUALIFIED_DOMAIN_NAME

    (如果您没有在默认端口上运行,还可以添加附加的 3 个附加端口名称的条目:http/COMPUTER_NETBIOS_NAME:PORT 等)

    乙:

    如果您的应用程序池在 IDENTITY“NetworkService”下运行,则添加与上述相同的 SPN,除了将“http”替换为“HOST”,然后添加到域 Controller 上的 COMPUTER_NETBIOS_NAME。

    我仍在努力在生产中实现这一点,但这在我的测试环境中对我有用。当我发现更多信息时,我会保持更新。

    注:

    如果您在连接时直接在 url 中使用 COMPUTER_NETBIOS_NAME,这将起作用。如果您使用别名 (www.mysite.mydomain.com) 或直接使用 IP 地址,这将不起作用。我相信,虽然我尚未对其进行全面测试,但您必须按照上述步骤操作,但在添加 SPN 时将 COMPUTER_NETBIOS_NAME 替换为别名或 IP 地址。 (或同时添加 netbios 和别名/ip,不太确定)

    此外,如果您收到有关设置对集成无效的错误...在您打开“ASP.NET Impersonation”后,您可能需要添加
    <validation validateIntegratedModeConfiguration="false" />

    到 system.webServer 部分中的 web.config

    关于authentication - 在带有 Windows Server 2008 的 IIS 7 上使用委派设置 Kerberos 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18025169/

    37 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com