JHipster:如何限制用户使用 REST 访问自己的数据

Posted

技术标签:

【中文标题】JHipster:如何限制用户使用 REST 访问自己的数据【英文标题】:JHipster: How to restrict user to access own data with REST 【发布时间】:2021-04-16 14:49:04 【问题描述】:

JHipster 为身份验证和授权实现了几个最佳实践。 这里主要描述:https://www.jhipster.tech/security/。 但是我仍然没有看到如何设计解决方案的示例,该解决方案不涉及将用户验证逻辑放在非常常见的用例中。

假设您有一个使用 REST-API 的网页,例如 BankAccountResource from JHipster Sample App,并且您希望将其限制为仅 ADMIN 角色或当前登录的用户。假设您为您的客户提供 50 项此类服务:BankAccount、Address、BillingAddress、UserData、Devices... 对于每个资源,必须限制 GET 和 UPDATE。加载设备 /api/device/id 也可能不包含用户 ID。

    如何防止用户A通过猜测用户B的ID来加载用户B的设备? 如何避免在每种方法中植入该代码? 我猜 JHipster/SpringSecurity 有概念/对象来处理这些用例。你能指点我,请解释一下如何使用它们吗?

【问题讨论】:

【参考方案1】:

也许这个问题有点帮助:Restrict URL access control by id in jhipster

Spring Security 有PostFilters 来检查一个对象,例如可以访问由方法加载的。如果您需要更多控制,可以使用访问控制列表进行细粒度的访问控制。

参考资料:

https://docs.spring.io/spring-security/site/docs/5.3.0.RELEASE/reference/html5/#domain-acls https://docs.spring.io/spring-security/site/docs/5.3.0.RELEASE/reference/html5/#method-security-expressions

【讨论】:

谢谢!正是我想要的。

以上是关于JHipster:如何限制用户使用 REST 访问自己的数据的主要内容,如果未能解决你的问题,请参考以下文章

JHipster 验证连接到 REST 端点的用户

使用 keycloak rest admin API (Oauth2) 修改用户姓氏后 jhipster 重新加载 OIDC 令牌

我如何通过 jHipster REST api 进行社交登录?

JHipster 限制用户会话不适用于默认 JWT 配置

在 Spring-boot 中成功登录后如何限制 POST Rest Api 以供公共访问

当访问令牌中没有身份时,如何使用 JWT 限制用户使用他们的资源?