我正在管理一组几乎完全用PHP编写的网络应用程序,并且希望找到一个身份验证平台来构建基于角色的授权系统。此外,我希望身份验证系统可以扩展用于,例如,系统服务(SSH等)
以下是我正在寻找的一些主要特征,按重要性排序:
当发出身份验证令牌时,我还希望存储用户的IP地址,并使用该地址来授权用户使用某些非基于Web的应用程序。出于这个原因,我希望桌面客户端发出令牌并撤销令牌,例如,当用户在他们的工作站处空闲时。 我认为Kerberos可能是一个解决方案,但还有什么其他选择?
答案 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听起来应该是你应该开始的框架。