Kerberos和/或其他身份验证系统 - 一次登录所有PHP脚本

时间:2010-03-24 00:39:28

标签: php kerberos authentication

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

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

  1. 轻松实现PHP(轻松存储/阅读角色等)。
  2. 如果可能的话,冗余。如果auth系统出现故障,则所有人都不会被锁定。
  3. 拥有适用于Windows和Mac的客户端。
  4. 简单的基于Web的管理(添加/删除用户/角色,更改密码)。如果没有,我可以毫不费力地建立一个管理系统。
  5. 一次性登录。
  6. 当发出身份验证令牌时,我还希望存储用户的IP地址,并使用该地址来授权用户使用某些非基于Web的应用程序。出于这个原因,我希望桌面客户端发出令牌并撤销令牌,例如,当用户在他们的工作站处空闲时。 我认为Kerberos可能是一个解决方案,但还有什么其他选择?

2 个答案:

答案 0 :(得分: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基础架构可以像您一样冗余,并且可以随心所欲地组织。领域可以有许多提供身份验证的服务器,并且可以以任意方式相互信任。

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

答案 1 :(得分:2)

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

虽然还有一些额外的部分需要用来实现你想要的,但LDAP听起来应该是你应该开始的框架。