当前位置: 首页 > 知识库问答 >
问题:

OneLogin关于PHP简单SAML的两个问题

阚通
2023-03-14

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

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

然而,作为该过程的一部分,我提出了两个问题:

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

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

"无效的数组设置: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使用的域?

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

谢谢我被这弄糊涂了。这当然不简单。

共有1个答案

禄奇希
2023-03-14

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

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

与2)相关

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

>

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

 类似资料:
  • 我需要为PHP配置OneLogin SAML工具包。 我按照此链接中的 PHP SAML 工具包配置步骤进行操作。 我添加了应用程序 SAML 测试连接器 (IdP w/ attr)。 我将存储库Github的内容添加到我的托管中以运行PHP代码。 我在 demo1/settings 中定义了变量.php 6.-URL将页面重定向到mypage.onelogin。com和我编写与demo1应用程序

  • 我正在寻找通过内部ADF和shibboleth Idp(身份提供商)实现SAML身份验证的解决方案。 有没有人有使用onelogin php工具包的经验? 此库是否适合或仅用于onelogin SAML Idp? https://github.com/onelogin/php-saml 看起来很有希望,另一种选择可能是simpleSamlphp,但onelogin似乎更受欢迎。 非常感谢

  • 在SAML中,如果SP在SP启动的SSO登录过程中发送RelayState参数,IdP (OneLogin)应该完全按照SP发送的方式发回RelayState。这可用于导航到特定页面等。 然而,OneLogin似乎并没有将其发回。配置OneLogin应用程序时,配置有一个名为RelayState的字段。我以前从未使用过它,所以我将其保留为空,认为它是SP不发送或IdP启动登录时的“默认”Relay

  • 我想要一个显示阿尔巴尼亚2000年所有疾病数量的柱状图。 我试过了,但我得不到我想要的。

  • 新单点登录和SAML,所以我不确定我问这个问题是否正确假设作为身份提供者,用户来到我的网站并单击服务提供者链接。然后我会提示他输入用户ID和密码。假设他成功地被认证为user1@xyz.com。然后我将该用户发送到提供SAML令牌的服务提供商。假设服务提供商期望用户是user1而不是user1@xyz.com。我需要创建某种映射吗?我怎么知道服务提供商期望什么,在这种情况下是user1而不是use

  • 如下考虑Java类,其中是的字段,而是类中方法的局部变量。 声称: