2

如果有人对简单 SAML (PHP) https://github.com/onelogin/php-saml有经验,我将非常感谢您的帮助。

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

但是,作为该过程的一部分,我有两个问题:

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

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

“无效的数组设置:idp_entityId_not_found、idp_sso_not_found、idp_cert_or_fingerprint_not_found_and_required”

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

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

这是一个令人担忧的原因是如果 IDP 在他们的最后有同样的问题(即他们不会有 SP 的详细信息,得到同样的错误,所以两者都不能继续)?!

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

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

所以我可以让人们下载我证书的 x509 部分——我想是公共位。但我想知道证书是否甚至需要链接到元数据/ACS URL 使用的域?

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

谢谢!我对此感到很困惑。很简单,肯定不是。

4

1 回答 1

1

我是 OneLogin SAML Toolkit 的维护者。

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

与 2) 有关

SAML 需要 x509 证书/密钥才能对 SAML 元素进行签名/加密。

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

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

于 2015-07-14T08:26:02.783 回答