了解client_id和client_secret

Nul*_*sis 11 oauth oauth-2.0 owin

有点像OAUTH的初学者,想问我是否理解正确的东西.我正在使用OWIN和C#,我设置了以下场景:

  1. 用户向我的令牌端点发出请求,并使用grant_type密码传递用户名/密码.如果凭证有效,那么我创建一个JWT.

  2. 用户返回JWT,然后客户端使用该令牌继续执行所有请求

  3. 任何需要授权的请求我都使用令牌的声明来确保允许用户发出此请求.

那么client_id和client_secret在哪里呢?这只是一个额外的安全层,说"在你甚至可以获得一个令牌之前,你需要传递一套凭证(id/secret),只有这些凭证有效,除了你提供的用户名/密码之外,还可以你回来了JWT?

想了解这两者有什么关系 - 非常感谢!

Wik*_*hla 8

密码流中不使用 client_id 和 client_secret。但是,您可能知道,OAuth2 有其他流程,适用于其他场景。

即:

  • 在验证用户服务器端的 Web 应用程序中使用的授权代码流。client_id 用于初始重定向,client_secret 用于应用程序将一次性代码交换为令牌的最后一步。

  • 用于验证应用程序而不是单个用户的客户端凭据

所有各种流程的简明参考:https : //aaronparecki.com/articles/2012/07/29/1/oauth2-simplified


Pat*_*man 7

有两方需要进行身份验证:应用程序和用户。

应用程序使用 ID 和密钥进行身份验证,可能由回调 URL 进行备份,这应确保令牌的接收者是正确的。

用户通过 OAuth 提供程序进行身份验证。它可以使用用户名/密码,或者 OAuth 提供商认为必要的任何内容。该令牌用于允许应用程序在不知道用户名和密码的情况下获取用户数据。