2

我正在研究身份验证协议的主题,特别是适用于 JAVA 和 REST API 的协议,并且对此主题有疑问。所需系统的架构是一个简单的客户端 - 服务器。

我发现了一些有用的协议,比如 2 legged OAuth、digest authentication、Amazons S3 协议,当然还有 SSL。

我是这个身份验证业务的初学者,我不太明白为什么我们应该使用所有其他协议而不是只使用 SSL?

据说SSL速度较慢,但​​我知道很久以前就是这种情况,现在这个协议没有这个问题。无论如何,所有其他协议都依赖于 SSL,这也让我感到困惑。

我知道 SSL 会阻止重放攻击和中间人攻击。与上述协议相比,SSL 有何不同或不足?每个协议的贡献是什么不同?

4

1 回答 1

1

您描述了 2 个不同的要求。您可以将其中一个或两个都应用于您的应用程序:

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

于 2013-04-03T09:41:21.187 回答