WSO2 API 管理器中的数据访问配置
Data Access Provisioning in WSO2 API Manager
使用 WSO2 API 管理器中的范围功能,我可以限制对我的后端 API 的访问,例如 http://mydomain/context/students(GET - list of all students),http://mydomain/context/student/S101 (GET - details of student S101) or http://mydomain/context/student/create (POST) 只有用户谁被分配了特定的角色。这么细粒度的控制,我都能做到。
但是我想实现更详细的过滤:只允许用户U101查看学生S101到S110的详细信息。所以 http://mydomain/context/student/S111 should be blocked for him and http://mydomain/context/students 应该只有 return S101 到 S110 的细节。我可以在 WSO2 API 管理器中实现这个过滤吗?
(我有一个 RDBMS table(后端的一部分,不在 WSO2 中),其中包含用户到学生列表的映射,允许用户访问其详细信息。)
在API管理器中,对响应内容的任何修改都是通过中介脚本完成的。在您的场景中,角色 - 内容映射应存储在 API Manager 中以过滤内容。为此,您可以使用 class 中介来过滤响应内容。
在调解器中,您必须获取角色 - 内容映射。您可以在 class 本身中定义它,也可以从您的数据库中检索它。
请按照文档[1] 和 [2] 了解如何编写 class 调解器以及如何使用它。
[1] https://docs.wso2.com/display/EI600/Class+Mediator
[2] https://docs.wso2.com/display/AM210/Adding+Mediation+Extensions
使用 WSO2 API 管理器中的范围功能,我可以限制对我的后端 API 的访问,例如 http://mydomain/context/students(GET - list of all students),http://mydomain/context/student/S101 (GET - details of student S101) or http://mydomain/context/student/create (POST) 只有用户谁被分配了特定的角色。这么细粒度的控制,我都能做到。
但是我想实现更详细的过滤:只允许用户U101查看学生S101到S110的详细信息。所以 http://mydomain/context/student/S111 should be blocked for him and http://mydomain/context/students 应该只有 return S101 到 S110 的细节。我可以在 WSO2 API 管理器中实现这个过滤吗? (我有一个 RDBMS table(后端的一部分,不在 WSO2 中),其中包含用户到学生列表的映射,允许用户访问其详细信息。)
在API管理器中,对响应内容的任何修改都是通过中介脚本完成的。在您的场景中,角色 - 内容映射应存储在 API Manager 中以过滤内容。为此,您可以使用 class 中介来过滤响应内容。
在调解器中,您必须获取角色 - 内容映射。您可以在 class 本身中定义它,也可以从您的数据库中检索它。
请按照文档[1] 和 [2] 了解如何编写 class 调解器以及如何使用它。
[1] https://docs.wso2.com/display/EI600/Class+Mediator
[2] https://docs.wso2.com/display/AM210/Adding+Mediation+Extensions