【问题标题】:SSO with Windows Authentication across multiple REST-APIs? (Kerberos Double hop)SSO 与跨多个 REST-API 的 Windows 身份验证? (Kerberos 双跳)
【发布时间】:2020-01-19 20:17:41
【问题描述】:

我有以下情况: (客户端/浏览器)=>(Web 服务/Web API)=>(SharePoint REST-Api)。 基本上,我想要实现的是让中间应用程序(WebService/Web API)充当 SharePoint-REST-API 前面的外观,以简化需要与我们的 SharePoint 应用程序通信的任何人的开发。 (基本上,我们将几个 SharePoint 请求调用封装到 Web API/Facade 中的一个调用中)。

现在的问题是,我还希望能够将登录的 Windows 用户(AD 用户)从客户端发送到 Web 服务,然后 Web 服务应该代表该 Windows 用户执行任何操作SharePoint REST-API 中所需的操作(这是为了确保对文件等的权限实际上是根据经过身份验证的用户设置的)。

到目前为止,我们尝试的是在一台服务器上设置 uo Web 服务,在另一台服务器上设置 SharePoint。然后我们尝试使用 Kerberos 和委派设置身份验证,但无法正常工作。 根据我提供的信息,如果我们设法正确设置 Kerberos,你们认为这样的“双跳”是否可行?

另一个让我印象深刻的想法是,也许我们不必将 Web 服务和 SharePoint 应用程序托管在两个不同的服务器上,但我们实际上可以将它们都托管在具有两个站点的单个 IIS 服务器内的同一台服务器上。 这仍然需要使用双跳设置 Kerberos 吗?或者只有在票证实际离开一台服务器到另一台服务器时才计算“跳跃”。因为在此处描述的情况下,从 Web 服务到 SharePoint-REST-API 的请求永远不会离开实际服务器,但它可能会跨越域(如网络域.. 不是 AD 域)。 这是否可行,而不必为 Kerberos 双跃点、SPN 等问题而烦恼..?

【问题讨论】:

    标签: asp.net authentication iis sharepoint kerberos


    【解决方案1】:

    当您使用集成身份验证时,匿名会被禁用并启用模拟。因此安全设置将不允许您的站点访问任何网络服务器上的资源。

    当您使用集成身份验证向 IIS 服务器进行身份验证时,这会用完您的第一个“跃点”。当 IIS 尝试访问网络设备时,这将是不允许的双跳或第二跳。 iis 不会将这些凭据传递给下一个网络设备。

    如果您使用匿名启用和模拟关闭,则不会出现此问题。

    要在 iis 中配置 Kerberos 身份验证,您可以按照以下步骤操作:

    1)打开 iis 管理器并选择站点。

    2) 从中间窗格中选择身份验证功能。

    3) 启用 Windows 身份验证并禁用匿名。

    4) 使用 Windows 身份验证,单击操作窗格中的提供程序。

    5)按以下方式设置提供者:

    协商

    NTLM

    保存更改。

    6)返回并选择配置编辑器。

    从部分下拉列表中选择 system.webServer/security/authentication/windowsAuthentication。

    “useAppPoolCredentials”设置为 true。

    “useKernelMode”为“True”并保存设置。

    7)重启iis。

    8)配置 SPN

    以管理员身份打开命令提示符并运行以下命令以检查机器名称:

    hostname
    

    当您拥有自定义主机名并希望将其注册到域帐户时,您需要在下方创建一个 SPN。

    setspn -a HOST/${FQDN_HOST} ${MACHINE_NAME}
    setspn -a http/${FQDN_HOST} ${MACHINE_NAME}
    

    9) 将应用程序池标识设置为自定义帐户并设置用户名和密码后。

    您可以参考以下这篇文章以获取更多详细信息:

    https://weblogs.asp.net/owscott/iis-windows-authentication-and-the-double-hop-issue

    https://active-directory-wp.com/docs/Networking/Single_Sign_On/SSO_with_IIS_on_Windows.html

    https://techcommunity.microsoft.com/t5/IIS-Support-Blog/Setting-up-Kerberos-Authentication-for-a-Website-in-IIS/ba-p/324644

    【讨论】:

    • 感谢您详细说明如何使用 Kerberos(双跳)设置模拟。但是.. 在设置 SPN 时,我不太清楚要使用哪个主机。在我的情况下,最后一跳将是从“外观/Web 服务”到 SharePoint 服务器,在这种情况下,模拟将发生在 Web 服务服务器中。我应该使用 Web 服务服务器的主机名还是使用应用程序池帐户设置 SPN 时的 SharePoint 服务器?
    • 正如我所说的,当时匿名被禁用并且模拟被启用。因此安全设置将不允许您的站点访问任何网络服务器上的资源。请通过提供的链接了解更多详细信息。这样您就可以了解 Kerberos 身份验证。
    • 但这不是 Kerberos 的双跃点应该解决的问题吗? blogs.technet.microsoft.com/askds/2008/06/13/… 我知道,例如使用 NTLM,由于双跳,这永远不会起作用,但据我了解,Kerberos 应该支持双跳
    • 您可以使用 WebClient 而不是 Httpclient,这可以帮助您毫无问题地传递凭据。有关更多详细信息,请参阅此 link。使用 SharePoint 主机名。如果未注册,则在 AD 中注册。
    猜你喜欢
    • 2021-12-06
    • 2019-04-12
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2013-09-23
    相关资源
    最近更新 更多