【问题标题】:External authentication/authorization for CakePHPCakePHP 的外部认证/授权
【发布时间】:2010-11-18 15:34:08
【问题描述】:

我们正在考虑为一些 Web 应用程序实现单点登录的选项,其中一些是 CakePHP (1.3),而另一些则不是。我希望从以前做过这件事的人那里得到建议或cmets。

想法如下:对 CakePHP 应用程序的访问由服务器 AuthType 控制。如果用户未通过身份验证,则他们根本无法访问应用程序,而是被踢回 SSO 登录页面。如果他们随后成功登录,他们将被重定向回应用程序并由 Web 服务器授予访问权限。

此时,CakePHP 将读取$_SERVER['REMOTE_USER'] 的内容以识别用户并向他或她提供正确的信息。

具体问题:

  • 假设我们可以相信 SSO 是安全的,那么这种方法是否安全可靠?
  • 是否可以(或有用)将此机制与 Cake 的 Auth 组件集成?
  • 直接读$_SERVER超全局是不是很卡?
  • 是否有更类似于 Cake 的方式让应用程序感知 SSO?

为了澄清,我只需要知道经过身份验证的用户 - 我不需要(或不想)与任何其他应用共享整个会话。

谢谢!

编辑:重申我在下面的评论,SSO 和所有应用程序都将在我们的服务器上。我们不会使用 RealID 或任何其他外部身份验证机制。因此,当我说“外部”身份验证时,我指的是 CakePHP 外部而不是我们的 Web 服务器外部。

【问题讨论】:

  • 如果所有组件都可以在同一个域下(也许使用子域)并且一切都是用 PHP 编写的,你可能想看看github.com/delight-im/PHP-Auth,它既与框架无关,又与数据库无关不可知论者。

标签: php security authentication cakephp single-sign-on


【解决方案1】:

AFAIK,REMOTE_USER 仅在设置了“需要授权”标头并且用户使用 http auth 进行身份验证时设置。

大多数单点登录服务使用 oAuth 类型的令牌来登录用户。我认为他们不会设置 SERVER 变量。

在任何一种情况下,都不建议使用 http 身份验证,因为如果您发现可疑活动,则无法将某人注销。并且用户只能通过关闭浏览器来注销自己。

我强烈建议您坚持使用基于会话的身份验证和授权。

【讨论】:

  • 服务器的REMOTE_USER变量应该设置为任何基于服务器的AuthType,而不仅仅是http auth;至少,我已经确认它是在我的情况下设置的。任何 SSO 的注销问题都很棘手,我在这里故意避免了它。 AFAIK,基于会话的身份验证并不是跨基于不同框架构建的多个应用程序的 SSO 的真正选择。
  • 当您说 SSO 时,您的意思是“跨我的应用程序”,还是像 facebook connect 之类的东西?我可能已经过火了,并认为是后者——在这种情况下,我没有看到 REMOTE_USER 设置了请求(尽管可能只是我的服务器配置不同)。
  • SSO 及其使用的所有应用程序都将在我们的服务器上。我们对使用任何外部身份验证源没有兴趣。身份验证通过与登录服务器对话的服务器扩展(我们使用 pubcookie)进行,因此您可以通过将适当的 AuthType 添加到 .htaccess 来启用它。然后服务器设置REMOTE_USER,就像它对任何其他身份验证一样。
猜你喜欢
  • 2018-12-11
  • 2018-07-25
  • 2018-05-29
  • 2010-11-14
  • 2021-11-08
  • 2013-08-08
  • 2017-09-11
  • 2023-03-23
相关资源
最近更新 更多