最佳答案
我们正在构建一个 rest 服务,希望使用 OAauth 2进行授权。现行汇票(5月19日的 v2-16)描述了 四种资助类型。它们是获取授权(访问令牌)的机制或流。
看来我们需要支持他们四个,因为他们有不同的目的。前两个(也可能是最后一个)可以从需要访问 API 的第三方应用程序中使用。授权代码是授权 Web 应用程序的标准方式,这些应用程序足够幸运地驻留在一个安全的服务器上,而隐式授权流则是不能完全保密其凭证的客户端应用程序(例如移动/桌面应用程序,JavaScript 客户端等)的选择。
我们希望自己使用第三种机制来为移动设备提供更好的用户体验——而不是让用户在浏览器中进入登录对话框等等,用户只需在应用程序中直接输入他或她的用户名和密码,然后登录。
我们还希望使用客户端凭据授予类型来获取访问令牌,该令牌可用于查看公共数据,而不与任何用户关联。在这种情况下,这不是那么多的授权,而是类似于 API 密钥的东西,我们使用这个密钥只给那些已经在我们这里注册的应用程序提供访问权限,如果需要,我们可以选择撤销访问权限。
所以我的问题是:
总之,我们希望能够使用来自客户端应用程序的客户端凭据和资源所有者凭据流。这两个流都需要以某种方式存储客户机机密,但客户机是移动应用程序或 JavaScript 应用程序,因此这些机密很容易被窃取。