我们如何通过OAuth服务器将客户的无服务器应用程序与自己的用户群集成在一起?

时间:2018-09-04 11:03:09

标签: security authentication oauth oauth-2.0 integration

我们有一个简单的设置:基于OAuth 2.0的授权服务器,目前仅支持client_credentials授予类型。然后,我们有了一个API,即资源服务器,该资源通过要求OAuth服务器提供访问令牌来受到保护。

到目前为止,我们API的所有用例都是纯机器对机器通信,只是我们的客户服务器运行批处理作业。

今天我和一个新客户开会。他们的SPA似乎没有自己的后端服务器。它使用AWS进行身份验证,并且似乎返回了JWT,但是据我所知,它们直接对公共可用服务进行了大量API调用,然后逻辑全部在SPA中执行。

理想情况下,我们希望他们简单地向我们注册一个OAuth客户端,这样,当用户发出需要我们的API之一的请求时,该请求首先被路由到他们的服务器,该服务器执行查找,然后使用其客户的凭据联系我们的服务器。但是他们宁愿不必设置后端。在这种情况下,我有点不知所措,我们如何明智地让它们与我们的系统集成。他们希望将用户的JWT发送到我们的系统,但是我不认为他们理解在这种情况下我们将需要他们的密钥来验证用户的签名,并且我们不想为此简单地创建新的API。目的。

非常感谢您提供有关此问题的建议-非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

理想情况下,我们希望他们只需注册一个OAuth   客户与我们联系,这样当用户提出需要以下要求之一的请求时   我们的API,请求首先路由到其服务器,该服务器执行   查找,然后使用其客户的凭据联系我们   服务器。

您推荐的方法是使用“客户证书授予”的正确方法。

  

他们希望将用户的JWT发送到我们的系统,但我不愿意   认为他们了解我们需要他们的钥匙来验证   在这种情况下,用户的签名,我们就不必创建新的   专门用于此目的的API。

如果以前的方法不起作用,恐怕这是唯一的方法。您将需要实现一个代理来验证JWT(您应该能够获取其公共密钥来验证签名)。您可以在AWS本身中执行此操作,使用AWS API Gateway + Lambda来验证JWT并将请求转发到具有Client Credentials Grant的现有后端,而无需预先支付任何费用。