不同站点的反向代理上只有一个 Shibboleth SP

不同站点的反向代理上只有一个 Shibboleth SP

我想知道如果您通过一个反向代理(使用 SSL 卸载等)将请求传递到所有站点,是否可以只有一个 Shibboleth 服务提供商 (SP)。

假设我在不同的域名有以下网站:

example.org
blog.example.org
wiki.example.org

这些网站本身及其各自的 Web 服务器都驻留在自己的 VM 中,无法直接与外部通信。我有另一台 VM,它只为所有这些域运行反向代理,并将请求传递到相应 VM 上的 Web 服务器。我们将其称为反向代理proxy.example.org(请注意,这不是一个可访问的域名)。

现在,我不再为每个站点配置一个 SP proxy.example.org,而是只在

example.org/secure
blog.example.org
wiki.example.org

将触发 Shibboleth 身份验证。身份验证成功后,请求将被传递。这可能吗?

我问是因为我只找到了这个资源https://wiki.shibboleth.net/confluence/display/SHIB2/SPReverseProxy我觉得这很含糊,因为它只说

  • 位置/安全资源受到 Shibboleth SP 的保护
  • Shibboleth SP 拦截该请求并生成一个 SAML2 AuthnRequest,其 AssertionConsumerServiceURL 为 https://代理服务器/Shibboleth.sso/SAML2/POST

所以我真的不知道 SP 必须安装在哪里......

答案1

是的,这是可能的。几年前我配置了一个 Shib 代理。这是我当时写的所有文档(它是 Solaris 上的设置,Linux 上的某些内容可能有所不同)。您将需要一个服务器来保存您要保护的应用程序以及一个带有 Shibboleth 内容和一些代理规则的代理服务器。

  • 安装区域(或 Linux 服务器)(将用作 Shibboleth 代理)
  • 编译 Shib Daemon(或者直接在 Linux 上安装)
  • 在 IDP Shib AAI 注册表中注册主机
  • 检查守护进程配置:shibd -t -c /opt/AAI/etc/shibboleth/shibboleth2.xml
  • 安装守护程序后,我们必须将其配置为“代理”使用。但首先,我们要测试我们的初始设置。打开文件 shibboleth2.xml 并在文件中查找错误的 URL。所有内容都应指向您的站点。搜索Handler type="Status"并删除末尾的 ACL。您的处理程序应如下所示: <Handler type="Status" Location="/Status" />
  • 现在你可以将浏览器指向状态页面,http://DOMAIN/Shibboleth.sso/Status。如果您看到 XML 输出,则一切正常。如果没有,请检查您的 shibboleth 配置。
  • 现在转到 Apache Web 服务器:测试单个 php 或 html 文件以确保 Apache 正常工作。设置要使用代理保护的应用程序(这将位于不同的服务器上)。不要忘记编辑防火墙并允许从 (AAI) 代理访问 Web 服务器。
  • 现在我们添加一个新服务(这在 AAI 代理上完成):
    • 创建指向 shibboleth (aai) 代理服务器的新 CNAME
    • 通过 ssh 登录 aai 代理服务器
    • 编辑 shibboleth2.xml:添加新的应用程序覆盖。复制此存根<ApplicationOverride id="<APP NAME>" entityID="https://<DOMAIN>/shibboleth" />
    • 替换 APP NAME 和 DOMAIN
    • 编辑 /opt/csw/apache2/etc/extra/httpd-vhosts.conf(在 Linux 上会有所不同)
    • 添加新的虚拟主机。
  • 复制此存根

    NameVirtualHost IPADDR:80
    <VirtualHost IPADDR:80>
        ServerName DOMAIN
        ServerAdmin [email protected]
        Redirect / https://DOMAIN/
        ErrorLog var/log/aai.error.log
        CustomLog var/log/aai.access.log common
    </VirtualHost>
    <VirtualHost IPADDR:443>
        ServerName DOMAIN
        ServerAdmin [email protected]
        # The Shibboleth handler shall process all HTTPS requests...
        <Location />
            Order deny,allow
            Allow from all
            AuthType shibboleth
            ShibRequestSetting applicationId APPNAME
            ShibUseHeaders On
            Require shibboleth
        </Location>
        # ...but only enforce a Session for the location below.
        <Location /secure>
            AuthType shibboleth
            ShibRequireSession On
            ShibRequestSetting applicationId APPNAME
            ShibUseHeaders On
            Require valid-user
        </Location>
        SSLEngine On
        SSLCertificateFile etc/server.crt
        SSLCertificateKeyFile etc/server.key
        SSLCertificateChainFile etc/server-ca.crt
        SSLProxyEngine on
        ProxyRequests off
        ProxyPass /secure https://WEBSERVERURL
        ProxyPassReverse /secure https://WEBSERVERURL
        ProxyPreserveHost On
        ErrorLog var/log/APPNAME.error.log
        CustomLog var/log/APPNAME.access.log common
    </VirtualHost>
    
    • 替换 APP NAME、WEBSERVER URL、IP ADDR 和 DOMAIN,您还必须更改设置路径。

    • 重新启动 apache 和 shibd

享受

相关内容