我们有一些网络系统:
make_juice
操作需要大约 10 分钟流量:
我认为这应该如何运作。 JuiceServiceWorker 获得自己的 jwt,因此在 AppleService 上我们可以确定谁来找我们获取数据,并且我们可以获取 John's Doe 对 AppleService 的实际权限(如果我们从 JuiceService 传递权限,它们可能已经过时了),并做出决定关于数据访问。
我觉得这应该有一个很好的解决方案,但是很多google和youtube都没有帮助找到解决方案。有谁知道这个问题的好解决方案,以及使用 keycloak 作为 IAM 的解决方案吗?
有一些解决方案,但我没有什么好的
对于此类用例来说,一个有用的技术是使用RFC8693中的令牌交换。它基于 OAuth 范围,传达高级权限。
初始代币
考虑向客户端颁发的具有用户级权限的伪令牌:
{
"sub": 123,
"scope": "fruit:write fruit:read",
"role": "user"
"exp": (15 minutes)
}
交换代币
交换的令牌具有延长的生命周期,但权限减少:
{
"sub": 123,
"scope": "fruit:read",
"role": "job",
"transaction_id": 1234,
"exp": (12 hours)
}
新代币一般会
downscope
原有代币,或者引入限制,例如:
在您不推翻用户同意的情况下,甚至可以
upscope
。当然,您的 API 必须强制执行此类限制。
嵌入式代币
减少令牌交换请求数量的另一种方法是在用户身份验证时颁发此类令牌,然后将它们作为自定义声明包含在主令牌中。
维护用户身份
这些
token sharing patterns
是在 API 相互调用时保持用户身份和其他重要安全值可进行数字验证和审计的方法。
不过,我无法就特定提供商对该标准的支持提供建议。