简单的服务器到服务器身份验证协议
Simple server-to-server authentication protocol
我是服务器身份验证的新手。我想要一个简单的方法让服务器 Main
从其他服务器(例如 A
和 B
)接收 REST 命令(GET、POST 等)安全的方式。
我阅读了有关 oAuth2 和 oAuth1.0a 的信息,但我认为拥有“资源”服务器和刷新令牌等是一种矫枉过正的做法。我能找到的最简单的两种方法是:
- 让服务器
A
和 B
生成密钥对,事先将 public 密钥提供给服务器 Main
(或者通过 /publickey
路由),每次从 A->Main
或 B->Main
发出 HTTP 请求时,使用数字签名对随机数进行签名,并让 Main
检查 DS 是否正确。
- 执行上述操作,但使用对称密钥、ID 和 HMAC(即,
Main
知道 A
具有密钥 XXX
,因此当它收到声称来自 A
,它将 运行 接收到的随机数上的 HMAC,并将其与接收到的 HMAC 进行比较)
请假设以上所有操作都是通过 HTTP 完成的,因此 MITM 是一个真正的问题
我发现以下参考资料指向类似的内容,但我真的很喜欢 'official' 协议,该协议经过审查并保证在密码学上是健全的:
我最终做了 Amazon AWS S3 service API authentication 的修改版本。这很好用。代价是每次请求都要计算一个HMAC,请求body要用两次
我是服务器身份验证的新手。我想要一个简单的方法让服务器 Main
从其他服务器(例如 A
和 B
)接收 REST 命令(GET、POST 等)安全的方式。
我阅读了有关 oAuth2 和 oAuth1.0a 的信息,但我认为拥有“资源”服务器和刷新令牌等是一种矫枉过正的做法。我能找到的最简单的两种方法是:
- 让服务器
A
和B
生成密钥对,事先将 public 密钥提供给服务器Main
(或者通过/publickey
路由),每次从A->Main
或B->Main
发出 HTTP 请求时,使用数字签名对随机数进行签名,并让Main
检查 DS 是否正确。 - 执行上述操作,但使用对称密钥、ID 和 HMAC(即,
Main
知道A
具有密钥XXX
,因此当它收到声称来自A
,它将 运行 接收到的随机数上的 HMAC,并将其与接收到的 HMAC 进行比较)
请假设以上所有操作都是通过 HTTP 完成的,因此 MITM 是一个真正的问题
我发现以下参考资料指向类似的内容,但我真的很喜欢 'official' 协议,该协议经过审查并保证在密码学上是健全的:
我最终做了 Amazon AWS S3 service API authentication 的修改版本。这很好用。代价是每次请求都要计算一个HMAC,请求body要用两次