您应该考虑您的需求,选择合适的协议和实现它的一些不错的软件。
如果没有更多细节,真的很难说更多:
- 您是在谈论一个还是多个 Web 应用程序的身份验证?您需要在不同的 Web 应用程序之间进行单点登录吗?
- 所有用户数据是否都存储在您的服务器上,或者用户是否能够登录,例如用谷歌帐户?
- 令牌应该包含有关用户的信息吗?
- 您的应用程序是在什么平台上开发的?
- 应该使用什么身份验证方法?
- 你想实现一个门户吗?
有各种各样的协议和工具,它们可能适合也可能不适合您的要求:
http://en.wikipedia.org/wiki/Category:Authentication_methods http://en.wikipedia.org/wiki/Category:Authentication_methods
http://en.wikipedia.org/wiki/Category:Identity_management_systems http://en.wikipedia.org/wiki/Category:Identity_management_systems
我个人比较喜欢CAS(http://www.jasig.org/cas http://www.jasig.org/cas)用于多个 Web 应用程序之间基于令牌的 SSO。它基于 Java,但也有一些对 PHP 和 .Net 的支持。
如果您想让用户使用 Google、Yahoo 或任何帐户(可配置...)登录并且不想自己存储用户信息,OpenID 就很好。
如果您希望为公司 Intranet 应用程序提供集成的 Windows-SSO,那么 Kerberos/SPNEGO 是您的最佳选择。
对于大学申请,SAML/Shibboleth 可能是最好的。在大学之外,它不太受欢迎,可能是因为它是一个相当复杂的协议。
哦,我差点忘了:大多数网络框架/标准都有自己的普通版本的“基于表单的身份验证”。用户进入登录表单时输入其用户名和密码。两者都可以使用或不使用 SSL 传输到 Web/应用程序服务器。服务器根据某种数据库对其进行验证,并向用户提供一个 cookie,每次用户发送请求时都会传输并验证该 cookie。但除了所有这些闪亮的协议之外,这似乎很无聊:-)
在对 Web 身份验证进行任何操作之前,您可能会先思考一下一般的 Web 安全性(http://journal.paul.querna.org/articles/2010/04/11/internet-security-is-a-failure/ http://journal.paul.querna.org/articles/2010/04/11/internet-security-is-a-failure/ http://www.eff.org/files/DefconSSLiverse.pdf http://www.eff.org/files/DefconSSLiverse.pdf)以及您可以采取哪些措施来避免使您的网站情况变得更糟(http://www.codinghorror.com/blog/2008/08/protecting-your-cookies-httponly.html http://www.codinghorror.com/blog/2008/08/protecting-your-cookies-httponly.html http://owasptop10.googlecode.com/files/OWASP%20Top%2010%20-%202010.pdf http://owasptop10.googlecode.com/files/OWASP%20Top%2010%20-%202010.pdf).