authentication - 简单的服务器到服务器身份验证协议
问题描述
我是服务器身份验证的新手。我想要一种简单的方法让服务器以安全的方式从其他服务器(例如和)Main
接收 REST 命令(GET、POST 等) 。A
B
我阅读了有关 oAuth2 和 oAuth1.0a 的信息,但我认为拥有“资源”服务器和刷新令牌等是矫枉过正的。我能找到的最简单的两种方法是:
- 拥有服务器
A
并B
生成密钥对,预先将公钥提供给服务器Main
(或通过/publickey
路由访问),每次 HTTP 请求从A->Main
or发出时使用数字签名签署随机数B->Main
,并Main
检查 DS 是否正确. - 执行上述操作,但使用对称密钥、ID 和 HMAC(即,
Main
知道A
具有 keyXXX
,因此当它收到声称来自 的请求时A
,它将在收到的 nonce 上运行 HMAC 并将其与收到的 HMAC 进行比较)
请假设以上所有内容都是通过 HTTP 完成的,因此 MITM 是一个真正的问题
我发现以下引用指向类似的东西,但我真的很想要一个“官方”协议,它经过审查并保证在密码学上是健全的:
解决方案
我最终做了一个修改版的Amazon AWS S3 服务 API 身份验证。这工作得很好。代价是每个请求都会计算一个 HMAC,并且请求正文必须使用两次。
推荐阅读
- python - TypeError: buf 不是数字元组
- docker - 有多少参数可以通过 cli 传递给 docker 入口点
- java - 我在哪里可以下载 Oracle Spatial 11g Java API?
- python - 在python中将文本文件转换为json
- winforms - 鼠标悬停列表框项目上的 POWERSHELL 工具提示
- javascript - 为什么我的替换方法会引发错误?
- java - Java 中的泛型类型推断限制
- angular5 - Angular 5以编程方式获取表单控件的直接formGroup名称
- c# - DataTable.Select() 显示数据表中记录的总和
- objective-c - Obj C 到 Swift 的转换