问题描述
我在带有 istio 网关的 kubernetes 上部署了一个微服务架构,AWS cognito 用于身份验证。现在,当用户登录到 APP 时,他可以使用 API 创建/查看数据。移动 FE 应用程序发送需要为其创建或获取数据的登录用户的“userId”。来自 cognito 的 JWT 令牌随每个在声明中包含 userId 的请求一起发送。
我想要实现的是限制我的 API,以便只为发送令牌的用户创建数据,或者只为 JWT 令牌中的用户获取数据。例如考虑下面的请求
POST /api/data/submit
{
"name": "John doe","address": "131 parklane street","userId": 1000,...
}
在上述请求中,任何用户(Say id:90)都可以为用户 ID 1000 创建数据。
项目目前实现的解决方案是使用Spring Aspects。缺点是它仅适用于将 userId 作为 PathVariable 发送的 API,尽管可以修改它以使用反射检查请求对象,但效率不高。
我想到的解决方案是使用 Bean 验证。我创建了一个自定义注释,可以使用自定义验证器在字段和参数级别应用该注释,并验证该值是否应与令牌中存在的 userId 匹配。
我尝试寻找最佳方法,但主要是找到了基于角色授权的解决方案,尽管我想要实现的目标有所不同。
任何指导都会有所帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)