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

Kerberos和/或其他身份验证系统-所有PHP脚本一次性登录,php,kerberos,authentication,Php,Kerberos,Authentication,我正在管理一组几乎完全用PHP编写的web应用程序,我想找到一个身份验证平台,在上面构建一个基于角色的授权系统。另外,我希望身份验证系统可以扩展,以用于系统服务(SSH等) 以下是我正在寻找的一些主要特征,按重要性排序: 易于PHP实现(轻松存储/读取角色等) 如果可能的话,是多余的。如果认证系统关闭,所有人都不会被锁定 有Windows和Mac的客户端 轻松的基于web的管理(添加/删除用户/角色,更改密码)。如果没有,我可以不费吹灰之力建立一个管理系统 一次性登录 我还希望,当颁发身份验证令

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

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

  • 易于PHP实现(轻松存储/读取角色等)
  • 如果可能的话,是多余的。如果认证系统关闭,所有人都不会被锁定
  • 有Windows和Mac的客户端
  • 轻松的基于web的管理(添加/删除用户/角色,更改密码)。如果没有,我可以不费吹灰之力建立一个管理系统
  • 一次性登录
  • 我还希望,当颁发身份验证令牌时,存储用户的IP地址,并使用该地址为用户授权一些非基于web的应用程序。出于这个原因,我希望桌面客户端在用户的工作站空闲时发出令牌并撤销令牌。
    我认为Kerberos可能是一个解决方案,但还有什么其他选择呢?

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


    虽然要实现您想要的目标,还需要添加一些额外的内容,但LDAP听起来像是您应该开始使用的框架。

    如果我这样做,我会使用Kerberos和LDAP的组合。Kerberos处理身份验证并向用户提供令牌。LDAP提供授权;有关组成员资格、用户联系信息等的信息

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

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

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


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

    此解决方案不提供请求的单点登录属性。