gpt4 book ai didi

java - 保护服务层、Web 服务层或两者的 Spring 安全性?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:50:39 24 4
gpt4 key购买 nike

我有一个通过 REST 公开的 API,我正在考虑在哪里设置权限限制。
我读过有一个关于保护服务层的最佳实践,因为它是完成工作的那个,你不知道它会在哪里被调用,但我不确定关于 WS 的最佳实践是什么层。
我的一个想法是,我需要在服务层上有一个非常细粒度的授权模型,在 WS 层上有一个非常粗粒度的授权模型,以尽量减少一方面破坏 DRY 原则,但仍然有一些概念纵深防御。

示例:

对于 Users资源有一个 UserWS和一个 UserService .管理员可以创建/更新/删除用户,用户可以阅读其他用户的信息。
假设 UserWS绑定(bind)到 %root%/users我将定义一个 intercept-url对于带有 ROLE_USER 的那个 url权限只是说您必须是用户才能到达那里,但服务层本身将为相关方法指定特定权限。

其他选项是:

  • 对服务和 WS-
    提出相同的授权要求亲-您将尽早过滤掉入侵者(如果您使用的是 spring mvc,则保存例如参数的转换)
    Con- 重复配置是一个维护问题,容易出错 => 安全问题

  • 仅将授权要求放在 WS-
    如果来自 WS,请尽快进行 Pro- Filter
    Con- 服务层可能在不同的上下文中使用

  • 仅在服务上设置授权要求-
    赞成-禁止重复
    Con- 允许“直截了当”的无能请求到达服务层的开销

非常感谢有关选项的任何反馈

最佳答案

一泰,在 WS 和服务层使用完全相同的安全机制被认为是在重复自己——并且需要在这两个级别进行维护。在 WS 层没有任何安全性是一件坏事——因为你实际上让任何人进入你的系统(即使你稍后会阻止他们——许多人认为这是一件坏事)。简而言之,我认为你应该把这两者混在一起——在 WS 层使用一个非常粗略的机制,在服务层使用一个非常强大的机制,这样你就不会重复自己,也不必在两个地方维护代码(如它不是相同的安全级别);并且您将能够尽快过滤掉规模较小的用户,但在应该放置它的地方仍然具有非常高的安全级别。

关于java - 保护服务层、Web 服务层或两者的 Spring 安全性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10614019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com