我正在研究身份验证协议的主题,特别是与JAVA和REST API配合良好的协议,并且对该主题有疑问。 所需系统的体系结构是一个简单的客户端 - 服务器。
我找到了一些有用的协议,如2脚OAuth,摘要认证,Amazons S3协议,当然还有SSL。
我是这个身份验证业务的初学者,我不太明白为什么我们应该使用其他所有协议而不只是使用SSL?
据说SSL据说速度较慢,但据我所知,很久以前就是这种情况,现在这个协议没有这个问题。 我也很困惑,所有其他协议都依赖于SSL。
我知道SSL会阻止重放攻击和中间人攻击。 与上述协议相比,SSL有何不同或不足?每个协议的贡献是不同的?
答案 0 :(得分:1)
您描述了两种不同的要求。您可以向您的申请中的一个或两个申请:
1)数据保护
2)身份验证
数据保护意味着机密性,内容完整性,重放攻击和中间人攻击等等。所有这些功能都可以通过SSL实现。 SSL几乎可以应用于所有协议。
身份验证意味着您要控制谁访问您的应用程序。 有很多协议,您应该根据您的要求和时间选择身份验证协议。请考虑OAuth2。
此外,SSL中的客户端身份验证是可选的。 SSL中的客户端身份验证是使用客户端证书执行的(通常是X.509证书http://en.wikipedia.org/wiki/X.509) 查看客户端证书身份验证: http://docs.oracle.com/javaee/1.4/tutorial/doc/Security5.html
客户端证书是最安全的身份验证,但最昂贵的是基础架构投资。至少它需要组织中的PKI基础架构http://en.wikipedia.org/wiki/Public-key_infrastructure。