OneLogin 关于 PHP Simple SAML 的两个问题

Two questions about PHP Simple SAML by OneLogin

如果有人有使用简单 SAML 的经验 (PHP) https://github.com/onelogin/php-saml 非常感谢你的帮助。

首先,我让它工作了。我的应用程序是服务提供商,它确实允许来自外部身份提供商的身份验证。万岁!

但是,在该过程中我提出了两个问题:

1) 我的 SP 生成了一个元数据 URL。如果客户 已经 提供了他们的 IDP 详细信息,那么该代码可以正常工作。我可以看到 php-saml 代码构建了设置对象,它验证并 returns 元数据 XML。一切顺利。

但是 如果客户端请求该元数据URL(为了在他们的 IDP 中配置我的 SP,首先) 它报告错误:

"Invalid array settings: idp_entityId_not_found, idp_sso_not_found, idp_cert_or_fingerprint_not_found_and_required"

显然这个例外是不言自明的:当然那些细节确实还没有提供。

所以我的问题是:在查看 SP 元数据的 XML 时,它没有 return 他们的任何 IDP 详细信息,所以为什么 不能 它在不知道这些细节的情况下生成元数据?

这是一个令人担忧的原因,如果 IDP 在 他们 端有同样的问题怎么办(即 他们 不会SP 的详细信息,得到相同的错误,因此两者都无法继续)?!

2) 作为设置数组的一部分,它要求 x509 证书和私钥来签署请求。目前我正在使用我网站的 SSL 证书 (my-domain.com)。一切正常。

但我看到其他 SP 让人们下载他们的证书。

所以我可以让人们下载我证书的 x509 部分 - public 位,我想。但我想知道证书是否甚至需要链接到 metadata/ACS URLs 使用的域?

或者它可以是任何旧证书,例如自签名的?你是做什么的?

谢谢!我对此很困惑。肯定不简单

我是 OneLogin SAML 工具包的维护者。

与 1) 有关,我们已经提出了拆分设置验证的请求,我们将很快在所有工具包中实现该请求:https://github.com/onelogin/python-saml/issues/74

与 2) 有关

SAML 需要 x509 cert/key 才能 sign/encrypt SAML 元素。

  • 一些 IdPs/SPs 使用与 Apache/Nginx 服务器相同的 x509 来启用 HTTPs(购买的证书)。

  • 其他人使用自签名证书,(您可以使用该工具创建自己的证书 (https://www.samltool.com/self_signed_certs.php)。我建议在创建它们时使用 IdP/SP 域以便以后能够识别它们(但 SAML 不需要)。您可以使用旧的,但由于您可以随时生成它们,因此最好将它们链接到域并使它们新鲜,避免其他人可以共享它过去)。