没有 SSL 的口令

Shibboleth without SSL

问:是否可以在没有 SSL 的情况下部署 Shibboleth?

简介:我们需要在测试环境中部署 Shibboleth。这个环境在互联网上是不可见的,所以我们不能添加一些有效的证书——所以它警告我们我们正在使用一个自签名证书。我们的应用无法通过此警告,并且我们无法自动测试通过 SAML 登录是否正常。

我们在设置中使用 docker 图像 shibboleth-idp

我认为我们可以更改 Jetty 的设置并关闭 SSL,但我不确定 Shibboleth 如何以及是否可以接受。

问题:"we can change settings of Jetty and turn off SSL, but I am not sure how and if Shibboleth will be OK with that."

回答:
(1) 是的。 Shibboleth 在没有 SSL 的情况下也可以,仅用于 演示目的 。换句话说,在测试环境中,您可以更改 Jetty 的设置并关闭 SSL,然后 运行 Shibboleth IdP with Jetty 在 8080 的 HTTP 端口而不是 8443 的 HTTPS 端口上。

已验证 SAML authentication/federation 由 Shibboleth IdP/Jetty/HTTP port:8080 提供,无 SSL Shibboleth SP。换句话说,Jettp HTTP 端口 8080(而不是 HTTPS 端口 8443)上的 Shibboleth IdP 运行s 成功地为 Shibboleth SP 提供了 SAML authentication/federation。

备注:
(一) 通常在生产环境部署Shibboleth IdP是利用proxy将外部HTTPS 443端口重定向到Jetty内部HTTPS 8443端口。

相应地,在测试环境部署Shibboleth IdP利用proxy将外部HTTPS 80端口重定向到Jetty内部HTTPS 8080端口。

(II) 当部署在生产环境中时,Shibboleth IdP 应该 运行 在具有 HTTPS 端口的 Jetty 上。

(2) Security And Networking of Shibboleth IdP 表明 Jetty HTTPS 密钥和证书不是 Shibboleth IdP 使用的密钥和证书,这表明 Shibboleth 在没有 SSL 的情况下也可以,仅用于演示目的。

Use of browser-facing TLS key and certificate
This key and certificate is not used by Shibboleth directly, and you SHOULD NOT use this key (or certificate) in any of the other capacities described below. 

(3) How to build and run Shibboleth SAML IdP and SP using Docker container GitHub 存储库提供了使用 Shibboleth SAML IdP 和 OpenLDAP 构建 SAML-based Authentication/Authorization 提供程序的说明。

  • Shibboleth SAML IdP 负责身份联合。

  • OpenLDAP负责身份认证。

(I) 运行 Shibboleth IdP with Jetty on the HTTP port of 8080, 只需执行以下命令修改配置即可构建IdP和SP Docker 镜像。为了您的方便,此 GitHub 存储库提供的不带 SSL 的 Shibboleth IdP 已经过验证。

cd shibboleth-idp-dockerized/ext-conf/conf/
cp idp.properties idp.properties.backup
cp idp.properties.without.ssl idp.properties
cd -

cd shibboleth-idp-dockerized/ext-conf/metadata/
cp idp-metadata.xml idp-metadata.xml.backup
cp idp-metadata-without-ssl.xml idp-metadata.xml
cd -

cd shibboleth-sp-testapp/shibboleth-sp/
# Edit shibboleth2.xml to update IdP entityID and metadata without SSL.
vi shibboleth2.xml

<SSO entityID="https://idp.example.com/idp/shibboleth">
-->
<SSO entityID="http://idp.example.com/idp/shibboleth">

<MetadataProvider type="XML" file="idp-metadata.xml"/>
-->
<MetadataProvider type="XML" file="idp-metadata-without-ssl.xml"/>

(II) 我已经验证了 Docker-running Shibboleth SAML IdP(身份提供商)和 OpenLDAP 为以下企业应用程序提供的 SAML Single Sign-On (SSO)。换句话说,我利用 Docker-running Shibboleth SAML IdP 和 OpenLDAP 成功登录了以下企业应用程序。

Microsoft Office 365
Google G Suite
Salesforce
Dropbox
Box
Amazon AWS
OpenStack
Citrix NetScaler
VMware vCloud Director
Oracle NetSuite

(III) 另一个 Whosebug 问题 讨论了 IdP 和 SP 之间的 SAML 配置。