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