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