使用WSO2ESB我正在尝试添加安全性并公开在WSO2DSS中运行的不安全的REST API。 基本上我想将用户名/密码存储在带有角色的ESB用户存储中,并根据角色授予API访问权限。我理解客户端应该在'Authorization'http标头中发送授权令牌。那么如何配置ESB以将此令牌与用户存储进行比较并仅允许访问特定服务? 我正在使用ESB,因为在将响应发送到客户端之前,需要对响应进行一些转换。任何广泛的想法都会有所帮助。
谢谢
答案 0 :(得分:1)
您可以在ESB中创建API以代理您的beckend REST API。然后,您可以编写一个处理程序来授权API调用。请参阅this blog bost。
顺便问一下,你没看过WSO2 API Manager吗?要管理您的API,这比ESB更合适。如果您有复杂的转换,则可以使用ESB(由APIM提供)。如果您的中介逻辑不复杂,您可以在APIM内部执行此操作。有关详细信息,请参阅this doc。
如果您需要更细粒度的授权功能,可以将entitlement mediator与XACML策略结合使用。有关详细信息,请参阅this article。
答案 1 :(得分:1)
我可以在http://suhan-opensource.blogspot.co.uk/2016/08/wso2-dss-secure-data-service-using.html的帮助下使用HTTP基本身份验证。
请注意,最新版本的WSO2ESB或DSS不允许您直接从Management Console添加安全性。使用Developer studio或直接编辑XML源。
答案 2 :(得分:0)
有几种方法。
直接授权:最简单的方法是启用服务安全性(在管理控制台上),选择“用户名令牌”,然后选择允许的角色。这样客户端必须发送:
保持简单。对于大多数用例,这种方法已经足够了。
委派授权:拥有第三方PDP(表示用户可以访问您的服务的服务)。
对于细粒度授权(例如,仅在特定时段内的特定角色等),您可以使用XACML EntitlementService(来自WSO2IS或AM)来授权呼叫。
对于来自其他系统的经过身份验证的用户,最简单的方法是使用您可以验证的Bearer令牌(例如,使用其他答案中已提到的API Managed)