我们如何将客户的无服务器应用程序与我们的 OAuth 服务器集成到自己的用户群中?

How can we integrate a customer's serverless application with own user base with our OAuth server?

我们有一个简单的设置:一个基于OAuth 2.0的授权服务器,目前只支持client_credentials授权类型。然后我们有一个 API 资源服务器,它通过要求来自我们的 OAuth 服务器的访问令牌来保护。

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

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

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

非常感谢有关此问题的任何建议 - 在此先感谢您的帮助。

We ideally would've liked them to simply register a single OAuth client with us, so that when users make a request that needs one of our APIs, the request is first routed to their server, which performs the lookup, and then uses their client's credentials to contact our server.

您推荐的方法是使用客户端凭据授予的正确方法。

They would prefer to send their user's JWT to our system, but I don't think they understand that we would need their key to verify the user's signature in that case, and we don't want to have to create new APIs simply for this purpose.

如果前面的方法不行,恐怕只有这个办法了。您将需要实施一个代理来验证 JWT(您应该能够获得他们的 public 密钥来验证签名)。您可以在 AWS 本身中执行此操作,使用 AWS API Gateway + Lambda 验证 JWT 并将请求转发到您现有的后端,其中您无需预先支付任何费用。