2

我正在研究身份验证协议的主题,特别是与JAVA和REST API协同工作的协议,并且有关于该主题的问题。 所需系统的体系结构是一个简单的客户机 - 服务器。安全和身份验证协议

我发现了一些有用的协议,如2腿OAuth,摘要式身份验证,亚马逊S3协议,当然还有SSL。

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

据说SSL据说比较慢,但我很早以前就明白这种情况,现在这个协议没有这个问题。 无论如何,所有其他协议都采用SSL也令我感到困惑。

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

回答

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

+0

感谢您的快速回答!好吧,我现在明白了SSL只能处理安全部分,而不是认证部分,但是您的客户端证书是什么意思?您是否在OAuth协议中引用了证书(包括时间戳和/或随机数和令牌)?而当你说证书使用SSL时,以什么方式?这些事情对我来说并不是那么清楚。 –

+0

我已经更新了答案 - 请再看一遍。客户端证书与OAuth令牌无关。 – Michael

+0

谢谢!这是有帮助的,我接受了答案,但无法宣传,因为我还没有足够的声望。还有一件事,当您谈论客户端身份验证时,您是在讨论如何验证Web应用程序或用户本身?这个词经常会感到困惑。当我们谈论身份验证时,我们是在谈论用户名和密码?还是像从客户端识别私钥那样更复杂的东西?或两者? –