【问题标题】:Shibboleth for multiple sites on IISIIS 上多个站点的 Shibboleth
【发布时间】:2020-02-21 15:47:44
【问题描述】:

我正在尝试为一个 IIS 实例上的两个站点配置 Shibboleth 服务提供程序:

  • 带有静态 HTML 的前端 - 只是 SPA - 例如 site.com
  • 带有 API 的后端 - 只是 REST - 例如 site-api.com

因此,当我打开第一个入口点时,我有 302 响应并重定向到 IdP,在输入凭据后 - 重定向到 site.com/Shibboleth.sso/SAML2/POST 并且一切正常。

我的 SPA 正在浏览器中运行并向 site-api.com 发出 AJAX 请求。这是一个问题,因为我有 302 响应并再次重定向到 IdP。如果浏览器发出请求,我没有任何问题,因为会自动重定向到 IdP 浏览器处理。在 IdP 上通过会话 cookie 进行身份验证后,它再次重定向到 site-api.com/Shibboleth.sso/SAML2/POST。

如何在两个站点之间共享会话?如果用户已经在 site.com 上通过身份验证,是否可以在第一次请求到 site-api.com 后不进行重定向。

我已用于第二个站点:

        <ApplicationOverride id="site-api" entityID="https://site-api.com/shibboleth" />

另外,我为 site-api.com 注册了 ISAPI 和 RequestMap。从技术上讲,它适用于 site.com。

我想我可以通过使用 XML 配置文件中的属性以某种方式共享会话,但对我没有任何作用。请帮忙。 :)

【问题讨论】:

    标签: iis shibboleth shibboleth-sp


    【解决方案1】:

    在 Shibboleth SP 中使用 ApplicationOverride 将辅助应用程序作为单独的服务调用,即您已确定该 entityID 是唯一的。在辅助 API 的情况下,我不会使用 Shibboleth 保护它,也就是说,如果您从已经过身份验证的站点进行 RESTful 调用,为什么要使用 Shibboleth SP(它旨在确保针对 IdP 进行身份验证)来保护它.我认为您需要重新考虑您的身份验证工作流程......一个更合理的想法:

    (1) 使用 SAML/Shibboleth 从 IdP 获取 site.com 的会话,

    (2) 根据 SP 会话生成应用程序会话(查看 SAML 流程中的 Sessions,实际上有几个,而不仅仅是一个 SP 会话)。更不用说 Shibboleth 是为身份验证而非授权而构建的。

    (3) 根据您想要的任何 API 安全机制进行 REST API 调用...即您可以基于 SAML 断言数据构建 JWT,并验证它在 API 端点上是否有效,因为您知道证书。

    SAML Web 流程并不是真正为 API 构建的,就像您在这里尝试使用它一样...您尝试摆脱的 302,这是 SAML 工作流程中的必备条件。

    【讨论】:

    • 非常感谢您的回复。现在我还有另一个问题。 CORS 和 OPTIONS 请求。 :( 我不知道如何为 OPTIONS 请求禁用 Shibboleth 服务提供者。我在 RequestMapper 配置部分找不到任何内容。
    • @ВадимКуповых 你可以使用 iis 请求过滤功能。有关更多信息,您可以参考以下链接:link1link2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2013-01-09
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 2013-08-08
    相关资源
    最近更新 更多