使用PHP的SAML2.0身份验证

使用PHP的SAML2.0身份验证,php,saml,Php,Saml,我们有一个用PHP和MySQL创建的网站,用户可以在这里注册和登录。最近我的客户给了我一些第三方服务/网站,也要求用户登录才能访问他们的服务。现在,我的客户希望,如果用户已经登录到我们的网站,当我们将用户重定向到其他/第三方网站时,它不应该要求密码或再次登录。当我向第三方网站提供解决方案时,他们要求我实现/使用SAML2.0 SSO选项来实现此功能。虽然我听说了auth0和SAML,但我不知道从哪里开始 我必须在我们的网站上添加一些东西吗?像auth0服务 我是否需要向他们要求一些东西来实现这一

我们有一个用PHP和MySQL创建的网站,用户可以在这里注册和登录。最近我的客户给了我一些第三方服务/网站,也要求用户登录才能访问他们的服务。现在,我的客户希望,如果用户已经登录到我们的网站,当我们将用户重定向到其他/第三方网站时,它不应该要求密码或再次登录。当我向第三方网站提供解决方案时,他们要求我实现/使用SAML2.0 SSO选项来实现此功能。虽然我听说了auth0和SAML,但我不知道从哪里开始

  • 我必须在我们的网站上添加一些东西吗?像auth0服务
  • 我是否需要向他们要求一些东西来实现这一点?我需要做哪些更改
  • 当我们将用户重定向到第三方站点时,它将自动登录或其他什么,这将涉及哪些步骤
  • 这里有些混乱

    Auth0是作为服务产品的标识,而不是SAML的一部分。您已经标记了OAuth,但这与SAML也没有任何关系。这是一个完全不同的协议

    您需要的是一个SAML客户端堆栈。在使用PHP时,请使用


    由于您是客户机,因此需要实现SP模式

    如果您打算使用Auth0,请使用此选项

    然后使用Auth0进行SAML到SAML IDP的连接

    因此,路径是:

    PHP应用程序-->Auth0-->SAML协议-->SAML IDP


    为了清楚起见,请使用simpleSAMLphp或Auth0。

    您的客户似乎希望您成为“身份提供商”,这样,当用户登录到您的网站时,他们将自动登录到其他第三方客户的网站

    技术解决方案:MiniOrange

    我最近这样做了,用“MiniOrange”SAML解决方案将我的PHP/MySQL应用程序连接到外部客户的内部网

    • 更多信息请点击这里:和
    • 支持:我有很多免费的Skype支持时间,他们非常好,他们帮助我直到成功
    • 安装/定价:我支付了现场许可证的费用(他们在我的服务器上以零成本安装),但你可以使用云版本(从10美元/月开始),他们有Wordpress和其他CMS插件

    您问题的答案:

    • 1) 我必须在我们的网站上添加一些东西吗?像auth0服务吗
    是的,您的网站必须是身份提供商

    • 2) 我是否需要向他们要求一些东西来实现这一点?我需要做哪些更改
    是的,他们必须安装并配置“服务提供商”连接器,该连接器将使用JSON Web令牌(JWT)自动连接到身份提供商(您的网站)。例如,检查用户是否已连接到您的网站(如果是,您的网站将返回一个令牌,然后用户自动登录到第三方网站,如果不是,他将重定向到SAML登录表单等)…所有这些过程对于用户来说都是不可见的

    • 3) 当我们将用户重定向到第三方站点时,它将自动登录或其他什么,这将涉及哪些步骤
    过程如下:

    • 用户转到第三方站点

    • 此第三方站点中安装的“服务提供商”连接器检查用户是否连接到此第三方站点。 如果是,无需执行任何操作,则表示用户已连接

    • 如果未连接,则用户将重定向到网站的登录表单。 用户键入其登录名/密码,然后重定向到第三方网站

    • 第三方网站(用户尚未登录)要求其“服务提供商”模块使用JWT Json Web令牌调用“身份提供商”(即您的网站)(IDP身份提供商和SP服务提供商之间的通信对于用户在浏览器中是不可见的,但如果您安装“SAML DevTools extension”Chrome extension,您将看到身份提供者和服务提供者之间交换的令牌)

    • 当您连接到您的网站(即“身份提供商”)时,身份提供商将返回SAML响应令牌,该令牌允许用户自动连接到第三方网站……完成后,用户将自动登录


    无论人们在这里告诉你什么,这对你来说都不是一件容易的事。SAML是一种使用XML传输数据的协议。要与之集成,这意味着你的站点必须能够接受包含SAML请求或响应的数据。这就是SAML协议知识的来源,也是你想要使用LightSaml之类的库的地方或者是一个完整的解决方案,比如SimpleSalPHP(SimpleSalPHP是一个狗屎代码库,比wordpress更糟糕)。我建议你付费给顾问或第三方为你做这件事,这样做会更便宜,也不容易出错。有一些simpleSAMLphp的直接经验,我可以支持@N.B。如果你一定要做到这一点,我建议你使用Shibboleth并使用socat或netcat设置本地化服务。这绝对是个好主意如果你能改变它,就要向专业供应商付款。SAML通常就像拔牙一样。“因为你是客户,你需要实现SP模式。”你确定吗?Pierre提到我的网站将充当“身份提供者”“。它们是一样的吗?@Gurveer看到这从一开始就让人困惑吗?”?您的网站需要有人登录,而另一个网站需要有人登录。实际上,您是身份提供者和服务提供者。作为IdP是您不想要的,因为它期望实现者采取安全措施。根据经验,我知道我在说什么,因为我经常在这个领域工作——你可能会犯下这样的错误,修复它的费用将是修复它的10倍