使用WSO2 ESB将OAuth安全的REST服务公开为非安全的

时间:2014-11-06 16:14:31

标签: security rest oauth token wso2esb

我有一个OAuth安全的REST服务" Oservice"。客户端(想要访问OService)无法在服务的令牌生成器中请求令牌。我希望WSO2 ESB能够为客户处理这个问题:

1)ESB应该有一个API,它接收来自客户端的请求,添加名称+密码并将此请求发送给令牌生成器。

2)ESB应该接收令牌并将令牌添加到来自客户端的消息中,并将其转发给Oservice。

3)Oservice从ESB接收消息,验证令牌并向ESB回复正确的内容,ESB会将回复转发给客户端。

我试图找出OAuth调解员是否这样做,但是没有成功,因为OAuth调解员的文档相当短。 有谁知道如何处理这种情况?

非常感谢!

修改

目标是使用ESB将安全服务公开为不保护客户端。我希望这有点澄清。

2 个答案:

答案 0 :(得分:0)

OAuth介体只能用于验证请求附带的OAuth访问令牌。在您的用例中,后端REST服务使用OAuth保护,而通过ESB发出的请求应具有访问令牌。在这种情况下,OAuth介体没有用,因为令牌验证发生在后端,而不是ESB。 This文章解释了OAuth的工作原理。在步骤2和3中,您无论如何都需要人工干预来验证资源所有者,而不是以编程方式完成。因此,您的完整要求似乎无效,因为应用程序而非资源所有者访问最终资源。

但我认为您的部分要求可以实现。假设您在ESB中有两个REST API API1和API2。

  1. 客户端向API1发送请求只是为了触发API。
  2. API1向IDP发送请求,其中包含客户端ID,授权范围和回调URL,即API2的URL。
  3. IDP会将客户端重定向到身份验证页面,在那里他将对自己进行身份验证。此时,客户端HTTP请求已完成。
  4. IDP会将授权代码发送给API2。
  5. API2将使用授权代码和客户端secrete从IDP获取Access令牌。
  6. 收到Access令牌后,API2可以访问您的Oservice并获取响应/资源。
  7. API2必须将响应存储在某个文件中。
  8. 客户端可以发出另一个请求说API3来检索它。
  9. 希望这有帮助

答案 1 :(得分:0)

在您的情况下,您可以使用OAuth2资源所有者凭据授予类型,该类型在使用资源所有者凭据对应用程序具有高度信任时使用。

  1. 现在您可以在ESB上将IDP OAuthService(它是一个SOAP服务)公开为REST说API1。
  2. IDP OAuth服务将输入作为客户端ID,客户端密钥,资源所有者用户名,资源所有者密码和授权类型(=密码),并返回具有有效期的访问令牌。
  3. 现在,您可以调用API1来获取访问令牌,然后在调用其他受OAuth保护的API时使用该令牌。
  4. 希望它有所帮助。