了解client_id和client_secret

时间:2016-01-04 14:10:45

标签: oauth oauth-2.0 owin

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:3)

密码流中未使用client_id和client_secret。但是,正如您可能知道的那样,OAuth2还有其他流程,适用于其他方案。

即:

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

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

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

答案 1 :(得分:0)

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

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

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