在 WSO2ESB 中保护 REST 代理服务

Securing a REST proxy service in WSO2ESB

使用 WSO2ESB 我正在尝试添加安全性并在 WSO2DSS 中公开 un-secured REST API 运行。 基本上我想用角色将 username/password 存储在 ESB 的用户存储中,并根据角色授予对 API 的访问权限。我知道客户端应该在 'Authorization' http header 中发送授权令牌。那么我如何配置 ESB 以将此令牌与用户存储进行比较并仅允许访问特定服务? 我正在使用 ESB,因为在将响应发送给客户端之前需要对响应进行一些转换。任何广泛的想法都会有所帮助。

谢谢

您可以在 ESB 中创建一个 API 来代理您的后端 REST API。然后你可以编写一个处理程序来授权 API 调用。参见 this blog bost

顺便问一下,你没看过 WSO2 API 经理吗?管理你的APIs,那比ESB更合适。如果你有复杂的转换,你可以使用 ESB(前面是 APIM)。如果你的调解逻辑不复杂,你可以在 APIM 本身内部完成。有关详细信息,请参阅 this doc

如果您需要更细粒度的授权能力,可以使用entitlement mediator with XACML policies. See this article获取更多信息。

有几种方法。

直接授权:最简单的方法是启用服务安全(在管理控制台上),select "username token" 然后select 允许的角色。这样客户端必须发送:

  1. 使用基本身份验证(授权:基本
  2. 发送带有 UsernameToken 和时间戳的 WS-Security header

保持简单。对于大多数用例,这种方法就足够了。

委托授权:拥有第 3 方 PDP(表明用户可以访问您的服务的服务)。

  1. 对于细粒度授权(例如,仅在特定时间的特定角色等),您可以使用 XACML EntitlementService(来自 WSO2IS 或 AM)来授权调用。

  2. 对于来自其他系统的经过身份验证的用户,最简单的方法是使用您可以验证的 Bearer 令牌(例如使用 API Managed,如其他答案中已经提到的)

http://suhan-opensource.blogspot.co.uk/2016/08/wso2-dss-secure-data-service-using.html 的帮助下,我能够使用 HTTP 基本身份验证。

请注意,最新版本的 WSO2ESB 或 DSS 不允许您直接从管理控制台添加安全性。使用 Developer studio 或直接编辑 XML 源代码。