我需要将身份验证集中到我的其余 Web 服务中,并使我们所有的 Web 服务的身份验证相同。所以我开始编写一个外部 Web 服务来处理身份验证。
为了保持兼容性,由于身份验证是使用 HMAC 签名(使用私钥签名)以及单个请求(因此没有任何类型的令牌)执行的,我认为让所有 Web 服务发送包含在传入请求中的 HMAC和 StringToSign(用于生成 HMAC 的数据表示)。
因此,授权服务可以(知道私钥)尝试编写相同的签名,如果匹配,则200 OK
使用 JSON 对象回答“已授权”。
所有这些通信都是通过 HTTPS 进行的,但我试图弄清楚如果有人拦截或修改这个答案会发生什么,使 a403 Forbidden
成为200 OK
......
我应该使用某种方式来识别这是原始答案吗?如果是这样,我该怎么办?
我同意 CA 发布的 ssl 证书是安全的,但是我如何确保我的 HTTPS 层没有受到损害,从而允许攻击者修改授权响应?
PS如果有的话,请提供一些标准解决方案,我不希望它与我现在使用的技术相关,因为每个服务都可能使用自己的堆栈,我真的不希望它是.NET或其他东西否则,因为身份验证机制有一个专有的实现。