mrclay/shibalike

提供用于模拟 Shibboleth 环境的 PHP 库。

1.0.0 2014-08-24 05:06 UTC

This package is auto-updated.

Last update: 2024-09-07 05:09:31 UTC


README

Shibalike 是一个用于模拟有限 Shibboleth 环境的 PHP 库,它具有查询用户属性、在会话中持久化它们(不干扰原生 PHP 会话)并将它们注入到 $_SERVER 数组的功能,就像一个网络服务器模块一样。

这允许您使用自己的认证系统(基于任何机制)和属性提供者,使用现有的 Shibboleth 认证模块将用户签到任何应用程序中。

设计

设计基于 这篇博客文章,阐述了初始概念。与 Shibboleth 不同,Shibalike 的 SP ("服务提供商") 和 IdP ("身份提供者") 交点必须共享一个共同的底层存储(文件系统、数据库等),并可以访问彼此的浏览器 Cookie。这限制了系统的跨应用边界的能力,但也限制了其实施和设置的复杂性。

为什么选择 Shibalike?

如果您维护一个依赖于机构 Shibboleth IdP 的 PHP 应用程序

  • 为了测试该应用程序,您需要一个带有 SP 的主机以及 IdP 的祝福
    • 在开发机器(例如笔记本电脑)上设置 SP 将是一项繁琐的任务。
    • 如果可能的话,让这些笔记本电脑获得 IdP 的祝福可能是一个折磨。
  • 您无法控制 IdP 的行为
    • 您无法轻松模拟停机或不可靠行为以进行测试。
    • 您无法轻松地了解您的应用程序如何处理 shibboleth 用户之间的切换。
    • 您无法快速更改任意属性以进行测试。
    • 在测试环境中,您无法简单地作为不同的 Shibboleth 用户登录。
    • 您无法在单元/集成测试中使用硬编码的用户。
    • IdP 可能会宕机!

您可以使用 Shibalike 设置一个本地的 "IdP",用于测试(例如,"登录"可能只是一个测试用户的下拉菜单)或作为真实 IdP 停机时的备份(例如,登录可能使用 LDAP 或其他方法进行用户认证)。

您甚至可以将 Shibalike 作为应用程序和真实 Shibboleth 系统之间的适配器:您本地的 "IdP" 将使用 Shibboleth 进行用户认证,但您将指定 Shibalike 如何将属性呈现给应用程序。例如,一旦 "admin" 用户通过 Shibboleth 认证,Shibalike 就可以为他/她提供在应用程序中以不同用户身份或更改属性登录的选项。

为什么不使用 SimpleSAMLphp?

您可能想查看 SimpleSAMLphp,这是一个令人印象深刻的 SAML(安全断言标记语言)的本地 PHP 实现,具有一些直接的 Shibboleth 兼容性。它可能比 Shibalike 多 100 倍的功能,但它也更重、更复杂。Shibalike 的消息传递通过共享的后端存储进行;无需 XML/加密/证书。

核心组件

  • IdP:允许标记用户为已认证,或注销当前用户
  • SP:允许将用户属性注入到$_SERVER,并可选项地重定向用户到您的“登录”应用(使用身份提供者)
  • AuthRequest:SP设置的值对象,表示希望进行身份验证
  • AuthResult:由身份提供者设置的值对象,包含有效用户的用户名和属性
  • IStateManager(接口):存储与当前浏览器关联的Auth*对象
  • Attr\IStore(接口):根据用户名提供属性(例如,从数据库中获取)

UserlandSession

默认情况下,Shibalike在非本地会话组件中持久化身份验证/用户数据,其操作与本地会话非常相似,但可以独立于它们使用。这允许Shibalike在不干扰这些应用中使用的本地会话的情况下,跨应用保持其状态。

完成的部分

  • 核心行为部分(SP,IdP)。
  • 状态管理器和属性存储的接口。
  • 基于UserLandSession的默认状态管理器。
  • 基于Zend Db和单个表的简单属性提供者。
  • 基于静态数组的简单属性提供者。
  • 一个基本演示,展示了原始但可用的使用方法。

许可证

Shibalike拥有宽松的“修改后的BSD”许可证

版权(c)2011,Stephen Clay及其他合作者。保留所有权利。

在满足以下条件的情况下,允许以源代码和二进制形式重新分发和使用,无论是否修改:

  • 源代码重新分发必须保留上述版权声明、本条件列表和以下免责声明。
  • 二进制形式重新分发必须在使用该分发提供的文档和/或其他材料中重新生产上述版权声明、本条件列表和以下免责声明。
  • 未经事先书面许可,不得使用Stephen Clay或其贡献者的姓名来认可或推广源自本软件的产品。

本软件由版权所有者和贡献者“按原样”提供,并且不提供任何明示或暗示的保证,包括但不限于适销性和适用于特定目的的暗示保证。在任何情况下,上述各方不对任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论这些损害是否因使用本软件而引起,即使已被告知此类损害的可能性。