相关疑难解决方法(0)

使用OAuth2的资源所有者密码凭据授予类型时,如何保持客户端凭据的机密性

我们正在建立一个休息服务,我们想要使用OAauth 2进行授权.在目前的草案(v2-16从5月19日)介绍了4种类型.它们是用于获得授权的机制或流程(访问令牌).

  1. 授权码
  2. 隐含的格兰特
  3. 资源所有者凭据
  4. 客户端凭据

我们似乎需要支持所有这四个,因为它们有不同的用途.前两个(可能是最后一个)可以从需要访问API的第三方应用程序中使用.授权代码是授权足够幸运地驻留在安全服务器上的Web应用程序的标准方法,而隐式授权流程将是客户端应用程序的选择,该客户端应用程序无法完全保密其凭据(例如,移动/桌面)应用程序,JavaScript客户端等).
我们希望自己使用第三种机制在移动设备上提供更好的用户体验 - 而不是将用户带到Web浏览器等的登录对话框,用户只需在应用程序中直接输入他或她的用户名和密码并登录.我们还希望使用客户端凭据授予类型来获取可用于查看与任何用户无关的公共数据的访问令牌.在这种情况下,这不是授权,而是类似于API密钥,我们使用它来仅访问已向我们注册的应用程序,如果需要,我们可以选择撤销访问权限.

所以我的问题是:

  1. 您是否认为我已正确理解不同授权类型的目的?
  2. 您如何保密客户凭证?在第三种情况和第四种情况下,我们需要在客户端的某个地方拥有客户端ID和客户端秘密,这听起来不是一个好主意.
  3. 即使您使用隐式授权类型并且您没有公开您的客户端机密,是什么阻止另一个应用程序使用相同的授权机制和您的客户端ID模拟您的应用程序?

总而言之,我们希望能够使用来自客户端应用程序的客户端凭据和资源所有者凭据流.这两种流程都要求您以某种方式存储客户端密钥,但客户端是移动或JavaScript应用程序,因此这些很容易被盗.

security oauth-2.0

75
推荐指数
1
解决办法
2万
查看次数

标签 统计

oauth-2.0 ×1

security ×1