我们有一些Web服务,还有一个OAuth2服务器可以保护对它们的访问。
我希望外部客户能够在他们的移动应用程序中使用这些Web服务。但是在某些情况下,他们希望维护自己的登录名/密码数据库,而不要求用户单独向我们的Web服务进行身份验证。在这种情况下,客户端会为我们这边的用户提供与他们自己的用户相对应的标识符(我们会在OAuth流程之外同步这些标识符)。
因此,假设用户已经在客户端建立了会话,我希望能够为他们提供某种访问令牌,该令牌将授予他们对我们这一侧相应用户的访问权限,而不会提示他们进行单独的访问密码。我该怎么办?
一种方法是要求客户端在自己的会话保护下为我们的Web服务设置代理。他们的移动应用程序会将请求直接发送到代理服务器,而不是我们的Web服务。他们的服务器可以使用client-credentials grant获取访问令牌,并将其添加到任何传入请求中,然后再将它们代理到我们的服务器。
有更好的方法吗?对于客户端来说,这似乎很难实现,并且您必须以某种方式验证传入的请求不是要尝试访问其他用户的数据。
是否存在任何允许客户的服务器代表单个用户请求访问令牌而无需用户交互的授权?然后,可以将令牌返回给应用程序,并且该应用程序可以使用它直接访问我们的Web服务。使用客户端凭据授予,令牌可授予所有用户访问权限,因此返回到单个用户的应用程序并不安全。
答案 0 :(得分:1)