我目前正在研究在 java 中与 REST API 配合良好的身份验证协议。有一些基本的东西我不明白:我阅读了很多关于 OAuth 协议、SSL、基本 HTTP 身份验证、摘要等的材料。在所有这些材料中,“客户端”一词显然具有不同的含义。在大多数情况下,据我了解,这个术语指的是 Web 应用程序或浏览器。但在某些情况下,例如基本 HTTP 身份验证,该术语指的是用户本人。
我不明白如何才能对 Web 应用程序的实例进行身份验证,或者需要对其进行身份验证。我知道这个过程中涉及到证书,但正如我所看到的,它们只是负责将消息安全地传输到服务器,并防止重放和 MITM 攻击。在OAuth中,在用户名+密码交换之后,证书中需要一个令牌,但是由于用户名和密码属于用户自己,据我所知,验证客户端的部分在哪里?
有一些协议在服务器端和客户端都使用私钥和公钥,这实际上确保了客户端是“它所说的那个人”。但是这些密钥是否必须应用于此 Web 应用程序的每个实例?我糊涂了。
无论如何,在哪些情况下,我们需要客户端身份验证?对用户进行身份验证并注意消息完整性还不够吗?