了解 client_id 和 client_secret

Understanding client_id and client_secret

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

  1. 用户向我的令牌端点发出请求,传入 username/password 和 grant_type 密码。如果凭据有效,那么我将创建一个 JWT。

  2. 用户取回 JWT,然后客户端使用该令牌处理所有请求

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

那么 client_id 和 client_secret 是从哪里来的呢?这只是一个额外的安全层说“在你甚至可以获得令牌之前,你需要通过我 另一组 一组凭证(id/secret)并且仅当 那些是有效的,除了你提供的username/password,你能找回一个JWT吗?

想了解两者之间的关系 - 非常感谢!

有两方需要验证:应用程序和用户。

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

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

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

即:

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

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

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