4

我正在管理一组几乎完全用 PHP 编写的 Web 应用程序,并希望找到一个身份验证平台来构建基于角色的授权系统。另外,我希望身份验证系统可以扩展以用于例如系统服务(SSH 等)

以下是我正在寻找的一些主要特征,按重要性排列:

  1. 简单的 PHP 实现(轻松存储/读取角色等)。
  2. 如果可能,冗余。如果身份验证系统出现故障,每个人都不会被锁定。
  3. 有适用于 Windows 和 Mac 的客户端。
  4. 简单的基于 Web 的管理(添加/删除用户/角色,更改密码)。如果没有,我可以毫不费力地构建一个管理系统。
  5. 一次性登录。

我还想在颁发身份验证令牌时存储用户的 IP 地址并使用它来授权用户使用一些非基于 Web 的应用程序。出于这个原因,我希望桌面客户端在例如用户在其工作站空闲时发出令牌并撤销令牌。我认为 Kerberos 可能是一个解决方案,但还有哪些其他选择?

4

2 回答 2

4

如果我这样做,我实际上在过去的几个时间点,我会使用 Kerberos 和 LDAP 的组合。Kerberos 处理身份验证并为用户提供令牌。LDAP 提供授权;有关群组成员资格、用户联系信息等的信息。

Kerberos 已经过非常非常好的测试和广泛部署。要使用 Kerberos 保护 Web 应用程序,请使用 Apache 的 mod_krb5 或 Stanford WebAuth 之类的解决方案。用户向 Kerberos 进行一次身份验证,然后他们的浏览器将通过 SPNEGO 使用票证自动将他们登录到 Web 应用程序。如果您有 Windows Active Directory 域,那么您的用户已经拥有 Kerberos 票证,您可以从他们的计算机登录会话中使用!

许多其他网络服务器程序也支持 Kerberos,例如 OpenSSH、各种 IPSEC VPN 工具、电子邮件(SMTP 和 IMAP)、XMPP(Jabber)聊天等。

Kerberos 基础架构可以是您喜欢的冗余,并且可以根据您的喜好进行组织。领域可以有许多提供身份验证的服务器,并且可以以任意方式相互信任。

这不仅仅是一个解决方案,它还是单点登录的解决方案。

于 2010-07-08T06:29:55.190 回答
2

您正在寻找的是(本质上)轻量级目录访问协议 (LDAP) 服务器/客户端设置。PHP 有一个内置库,它很容易冗余,有 windows/mac/linux 的客户端,前端可用(虽然我目前不能推荐任何好的前端),它会为你的任何应用程序集提供身份验证想。

虽然您需要添加一些额外的部分才能完全实现您想要的,但 LDAP 听起来像是您应该开始使用的框架。

于 2010-05-05T14:08:27.953 回答