【问题标题】:Data Access Provisioning in WSO2 API ManagerWSO2 API Manager 中的数据访问配置
【发布时间】:2018-02-26 23:13:46
【问题描述】:

使用 WSO2 API Manager 中的范围功能,我可以限制对我的后端 API 的访问,例如 http://mydomain/context/students(GET - 所有学生的列表)、http://mydomain/context/student/S101(GET - 学生 S101 的详细信息)或 http://mydomain/context/student/create( POST) 仅发给分配了特定角色的用户。这么精细的控制,我可以实现。

但我想实现更详细的过滤:用户 U101 只能查看学生 S101 到 S110 的详细信息。所以http://mydomain/context/student/S111 应该为他屏蔽,http://mydomain/context/students 应该只返回 S101 到 S110 的详细信息。我可以在 WSO2 API 管理器中实现此过滤吗? (我有一个 RDBMS 表(后端的一部分,不在 WSO2 中),其中包含用户到学生列表的映射,用户可以访问其详细信息。)

【问题讨论】:

    标签: wso2 authorization wso2is wso2-am restful-authentication


    【解决方案1】:

    在 API Manager 中,对响应内容的任何修改都是通过中介脚本完成的。在您的场景中,角色 - 内容映射应存储在 API Manager 中以过滤内容。为此,您可以使用类中介来过滤响应内容。

    在中介中,您必须获得角色 - 内容映射。您可以在类本身中定义它,也可以从数据库中检索它。

    请按照文档 [1] 和 [2] 了解如何编写类中介器以及如何使用它。

    [1]https://docs.wso2.com/display/EI600/Class+Mediator

    [2]https://docs.wso2.com/display/AM210/Adding+Mediation+Extensions

    【讨论】:

    • 非常感谢您的回复。有一个疑问,您在第一段中说“在您的场景中,角色 - 内容映射应该存储在 API Manager 中以便过滤内容”,然后“您可以在类本身中定义它,也可以从数据库中检索它。 "在第二段。 ---- 这里我有点糊涂了。我应该将映射存储在 API 管理器中吗?与将过滤配置存储在数据库中而不是 API 管理器的一部分相比,它会使我的过滤配置更容易吗?
    • 很抱歉造成混乱。让我说清楚。您可以将其存储为 apim 注册表资源(在 api 管理器中)、硬编码在您的类调解器中或存储在您的数据库中。在类中介器中,您可以基于它实现检索方法。 IMO,因为您的数据库中已经有了映射,所以最好的方法是从类中介调用您的数据库。所以你不想复制它。
    • 好的。再次感谢...我将尝试按照您建议的方式实施。顺便说一句,您能否建议我正在寻找的功能是否更容易在任何其他 WSO2 产品中实现,我可以使用它来代替 apim? (比如AFIK、WSO2 IS也可以用来做api认证和授权,开箱就支持这样的功能吗?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多