我必须遵循哪些步骤才能在我的网页中实施令牌身份验证?
任何摘要或链接都将受到赞赏。
我希望实现类似于Facebook或Google,首次客户端登录并接收令牌,然后在下一步操作中使用它。 我还阅读了关于OAuth但我不想从第三方访问我的应用程序。
感谢您的长期回应,我似乎很清楚我需要了解更多相关信息。
我想要知道实现使用令牌身份验证的基本Web应用程序的“步骤”。那就是用户记录一次然后可以做一些动作:添加内容,编辑等等。
我知道我所说的与会话相似,其中服务器在HTML标头上添加了一个SESSION_ID,后来的请求被识别并与该会话相关联。我读过会话方式不好扩展所以我想在进入OAuth之前实现类似gmail或facebook的系统。可能我说的是类似oauth的东西(我没有深入阅读)但是两条腿而不是三条腿。
答案 0 :(得分:7)
您应该考虑您的要求,选择合适的协议以及实现它的一些体面的软件。
如果没有更多细节,很难说更多:
有许多协议和工具可能符合或不符合您的要求:
http://en.wikipedia.org/wiki/Category:Authentication_methods
http://en.wikipedia.org/wiki/Category:Identity_management_systems
我个人喜欢CAS(http://www.jasig.org/cas)用于多个Web应用程序之间的基于令牌的SSO。它是基于Java的,但也有一些PHP和.Net的支持。
OpenID很好,如果你想允许用户使用他们的谷歌,雅虎,任何帐户(可配置...)登录,并且不想自己存储用户信息。
如果您希望为企业内部网应用程序集成windows-sso,那么Kerberos / SPNEGO就是您的选择。
对于大学申请,SAML / Shibboleth可能是最好的。在大学之外,它不太受欢迎,可能会导致它是一个相当复杂的协议。
哦,我几乎忘了:大多数Web框架/标准都有自己版本的普通“基于表单的身份验证”。用户访问登录表单时输入其用户名和密码。两者都有或没有SSL传输到Web /应用程序服务器。服务器根据某种数据库对其进行验证,并向用户提供cookie,每次用户发送请求时都会传输和验证cookie。但除了所有这些闪亮的协议之外,这似乎很无聊: - )
在使用网络身份验证做任何事情之前,您可能会考虑一般的网络安全(http://journal.paul.querna.org/articles/2010/04/11/internet-security-is-a-failure/ http://www.eff.org/files/DefconSSLiverse.pdf)以及您可以采取哪些措施来避免在您的网站上造成更糟糕的情况({ {3}} http://www.codinghorror.com/blog/2008/08/protecting-your-cookies-httponly.html)。
答案 1 :(得分:1)
明白你的观点。
在协议级别上,一种非常简单的令牌方法是HTTP基本身份验证。但这通常不合适,因为没有退出功能等。
自定义,简单的基于cookie的方法可以是这样的:
(需要更多考虑:httponly和安全标志,传输层安全性,重放攻击等)
Amazon S3将其身份验证令牌存储在HTTP标头中,并使用HMAC进行计算。这里描述:http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?S3_Authentication.html(不一定建议与基于浏览器的Web应用程序一起使用)
如果您附近有任何关于REST的书,您可能会看一下它是否有关于身份验证的章节。可能事情比这里解释得更好: - )
有一些框架能够进行这种身份验证。出于安全原因,在实现自己的东西之前先检查它们是有意义的。