【问题标题】:Securing a REST proxy service in WSO2ESB在 WSO2ESB 中保护 REST 代理服务
【发布时间】:2016-10-25 21:18:16
【问题描述】:

使用 WSO2ESB 我正在尝试添加安全性并公开在 WSO2DSS 中运行的不安全的 REST API。 基本上,我想将用户名/密码与角色一起存储在 ESB 中的用户存储中,并根据角色授予对 API 的访问权限。我了解客户端应在“授权”http 标头中发送授权令牌。那么如何配置 ESB 以将此令牌与用户存储进行比较并仅允许访问特定服务? 我使用 ESB 是因为在将响应发送到客户端之前需要对响应进行一些转换。任何广泛的想法都会有所帮助。

谢谢

【问题讨论】:

    标签: wso2 wso2esb


    【解决方案1】:

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

    顺便问一下,你没看过 WSO2 API Manager 吗?要管理您的 API,这比 ESB 更合适。如果您有复杂的转换,您可以使用 ESB(以 APIM 为前端)。如果您的中介逻辑不复杂,您可以在 APIM 本身内部完成。有关更多信息,请参阅this doc

    如果您需要更细粒度的授权功能,您可以将entitlement mediator 与 XACML 策略一起使用。请参阅this article 了解更多信息。

    【讨论】:

    • 谢谢巴蒂亚。我做了一些类似于你提到的博客的事情。我在 ESB 中只有几个中介,但我需要操作 XML 消息和 HTTP 返回码。所以猜测 ESB 是唯一的选择。
    【解决方案2】:

    我可以在http://suhan-opensource.blogspot.co.uk/2016/08/wso2-dss-secure-data-service-using.html 的帮助下使用 HTTP Basic 身份验证。

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

    【讨论】:

    • 太好了,以前的版本无法从策略文件中映射角色 :) 我们都学到了一些新东西 :D
    【解决方案3】:

    有几种方法。

    直接授权:最简单的方法是启用服务安全性(在管理控制台上),选择“用户名令牌”,然后选择允许的角色。这样,客户端必须发送:

    1. 使用基本身份验证(授权:基本
    2. 发送带有 UsernameToken 和 Timestamp 的 WS-Security 标头

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

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2017-09-04
    • 2015-03-28
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多