1
在使用OAuth2的“资源所有者密码凭据”授予类型时,如何对客户端凭据进行保密
我们正在建立一个休息服务,我们想使用OAauth 2进行授权。在目前的草案(5月19日v2-16)描述了4种类型。它们是用于获得授权(访问令牌)的机制或流程。 授权码 隐性补助金 资源所有者凭证 客户凭证 似乎我们需要支持它们全部四个,因为它们有不同的用途。前两个(可能还有最后一个)可以从需要访问API的第三方应用程序中使用。授权代码是对足以幸运地驻留在安全服务器上的Web应用程序进行授权的标准方式,而隐式授予流将是无法完全对其凭据保密的客户端应用程序(例如,移动/台式机)的选择。应用程序,JavaScript客户端等)。 我们希望自己使用第三种机制,以在移动设备上提供更好的用户体验–而不是将用户带到Web浏览器中的登录对话框等,用户只需在应用程序中直接输入其用户名和密码即可。并登录。我们还希望使用“客户端凭据”授予类型来获取访问令牌,该访问令牌可用于查看公共数据,而不与任何用户相关联。在这种情况下,这与其说是授权,不如说是类似于API密钥的一种,我们仅用于授予对已向我们注册的应用程序的访问权限,并为我们提供了在需要时撤消访问权限的选项。 所以我的问题是: 您认为我正确理解了不同赠款类型的目的吗? 您如何对客户凭证保密?在第三种情况和第四种情况下,我们都需要在客户机上的某个位置具有客户机ID和客户机密钥,这听起来不是一个好主意。 即使您使用隐式授予类型并且不公开您的客户端机密,是什么阻止另一个应用程序使用相同的授权机制和您的客户端ID来模拟您的应用程序? 总而言之,我们希望能够使用来自客户端应用程序的客户端凭据和资源所有者凭据流。这两个流程都要求您以某种方式存储客户端机密,但是客户端是移动或JavaScript应用程序,因此很容易被盗。