Oauth2流,授权与授权授予之间的区别

时间:2018-06-22 04:40:03

标签: node.js express oauth oauth-2.0

我正在使用此库:https://github.com/manjeshpv/node-oauth2-server-implementation

根据我对Oauth2的理解:

1)Generate a clientid and clientSecret

2)User use clientId and clientSecret to get a bearerToken

3)Authorisation server returns accessToken to users if valid clientId and clientSecret combination

4)User then use the accessToken to run http post/get api calls (within their scope)

在GITHUB中给出的POSTMAN示例中,我们有

enter image description here

我注意到密码授予,刷新令牌,客户端凭据授予和授权授予指向同一POST请求,但正文不同。

和Authorize示例Web服务,我假设用户必须单击才能使授权服务器返回访问代码,以便用户调用范围特定的API url,但是以某种方式也需要访问代码,我我很困惑。

enter image description here

并且如果我使用“客户端凭据授予”(我假设是使用我的clientId和clientSecret返回AccessToken),那么授权Web服务的意义何在?

enter image description here

此库和Web服务示例的正确流程是什么?

非常感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

  

和Authorize示例Web服务,我假设是该用户   必须单击以使授权服务器返回一个   用户访问代码以调用范围特定的API url,但是以某种方式   访问代码也是必需的,我很困惑。

您的术语有点混乱。这可能是最受欢迎的OAuth流程:

  1. 开发人员(您)注册了OAuth客户端,收到了clientidclientSecret
  2. 用户打开一些网址,例如oauth.com/authorize,将显示一个对话框,要求向开发人员的应用程序授予某些权利。 (此处使用clientId,但不需要clientSecret)
  3. 如果用户同意,将授权 code 发送到开发人员的应用程序(发送至在步骤1中定义的redirect_uri)。该代码是短期代码,不能用于访问用户数据。
  4. 开发人员的应用程序使用授权代码clientIdclientSecret向OAuth服务器发出POST请求,并获得授权 token 作为交换。此令牌可用于访问用户数据。
  

,并且如果我使用“客户凭据授予”(我假设是要返回   使用我的clientId和clientSecret的AccessToken),那么授权Web服务的意义何在?

由ClientCredentials授予获得的令牌标识客户端,而不标识用户。因此,我认为这对您而言毫无用处。