gpt4 book ai didi

c# - 在 IIS 8 上运行应用程序时如何委派 Windows 身份验证 session ?

转载 作者:可可西里 更新时间:2023-11-01 08:29:18 24 4
gpt4 key购买 nike

我在 ASP.Net MVC 5 Framework 的顶部有一个用 c# 编写的 Intranet 应用程序。我的应用程序配置为通过“Windows 身份验证”方法对用户进行身份验证。此应用程序在 IIS 8 上运行。

我的应用程序使用第三方 SDK 与我在同一域上运行的另一个程序进行交互。此第三方应用程序还允许用户通过提供的 SDK 使用 Windows 身份验证登录。

问题

但是,SDK 与之通信的服务器总是返回“无效的用户名/密码无效”。

经过深入故障排除后,我发现 IIS 没有返回正确的用户名。它没有返回“经过身份验证的用户”,而是返回运行池应用程序的用户。所以,为了解决这个问题,我将应用程序设置更改为以下内容

  • 我禁用了“匿名身份验证”
  • 我启用了“Windows 身份验证”
  • 我启用了“ASP.NET Impersonation”,而“ASP.NET Impersonation”设置被设置为“Authenticated user”。笔记:
    这需要“经典”管理管道而不是“集成”
    一些理由。
  • 我将 AppPool 托管管道设置更改为“经典”v4
  • 将运行 AppPool 的用户更改为“网络服务”而不是“ApplicationPoolId”
  • 然后将身份验证提供程序列表保留为“协商”和“NTLM”
  • 最后,我保持启用“内核模式身份验证”。

  • 所以上面的设置返回了正确的用户名,但它是 不是 将密码委托(delegate)给 SDK。我猜是因为通信滚刀,IIS 正在保护登录用户,它是 不是 允许我将密码委托(delegate)给另一个服务/SDK。

    然后我尝试将我的设置更改为以下内容
  • 我将 AppPool 托管管道设置更改为“集成”v4.0
  • 将运行 AppPool 的用户更改为“网络服务”
  • 我禁用了“匿名身份验证”
  • 我启用了“Windows 身份验证”
  • 已禁用 “ASP.NET 模拟”
  • 身份验证提供程序列出“Negotiate:Kerberos”、“Negotiate”和“NTLM”
  • 我禁用了“内核模式身份验证”,因为它不适用于“Kerberos”提供程序。

  • 因此,上述内容完全阻止了我登录我的 MVC 应用程序,它只是一遍又一遍地提示我输入凭据。

    为了解决这个问题,我在域 Controller 中找到了我的网络服务器名称,然后转到“委托(delegate)”选项卡并将其更改为“信任此用户以委托(delegate)任何服务(仅限 Kerberos)”

    没有这个设置,允许我登录到我的 MVC 应用程序。但这一次,它没有将用户名或密码委托(delegate)给 SDK。事实上,我得到的用户名是 PoolApp 用户名,而不是经过身份验证的用户。

    为了涵盖我的所有基础,我将 AppPool 用户更改为具有 Windows 身份验证访问 SDK 连接到的服务器的实际用户。果然,效果很好,我能够连接到第二个服务。然而,它是 总是 将运行 AppPool 的用户名/密码委托(delegate)给 SDK,而不是委托(delegate)已连接/经过身份验证的用户名/密码。

    总之,出于某种原因,IIS 没有将用户名/密码委托(delegate)给 SDK。如何让 IIS 将连接的用户 session /凭据委托(delegate)给另一个服务?

    委派也有可能失败,因为用户使用的是“NTLM”身份验证而不是 Kerberos,而服务器只会在 Kerberos 身份验证时才委派“如果是这种情况,我如何强制用户使用“Kerberos” “身份验证而不是”NTLM?

    最佳答案

    您是否尝试启用 impersonation在您的 web.config ?

    <configuration>
    <system.web>
    <identity impersonate="true" />
    </system.web>
    </configuration>

    如果这不起作用,则您可能需要在 ActiveDirectory 中为此计算机启用委派。看这里: https://stackoverflow.com/a/1405666/5069465

    关于c# - 在 IIS 8 上运行应用程序时如何委派 Windows 身份验证 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47100543/

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