我正在研究身份验证协议的主题,特别是与JAVA和REST API配合良好的协议,我有一个关于这个主题的问题。所需系统的体系结构是一个简单的客户端-服务器。
我发现了一些有用的协议,比如两条腿的OAuth,摘要身份验证,亚马逊的S3协议,当然还有SSL。
我是认证业务的初学者,我不太明白为什么我们要使用现有的所有其他协议而不是只使用SSL?
据说SSL比较慢,但我知道很久以前就是这样,现在这个协议就没有这个问题了。让我感到困惑的是,所有其他协议都依赖于SSL。
我知道SSL可以阻止重放攻击和中间人攻击。与上述协议相比,SSL有何不同或不足之处?每个协议有什么不同的贡献?
发布于 2013-04-03 17:41:21
您描述了两种不同的需求。您可以将其中之一或两个应用程序应用于您的应用程序:
1)数据保护
2)身份验证
数据保护包括保密性、内容完整性、重放攻击和中间人攻击等。所有这些特性都可以通过SSL来实现。SSL几乎可以应用于所有协议。
身份验证意味着您希望控制谁访问您的应用程序。有很多协议,您应该根据您的需求和您希望在身份验证上投入的时间来选择身份验证协议。请考虑OAuth2。
此外,客户端身份验证在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。
https://stackoverflow.com/questions/15782972
复制相似问题