OAuth 2.0中的2-legged身份验证中client_id和client_secret的用途是什么

时间:2015-02-07 07:38:38

标签: authentication oauth oauth-2.0

出于好奇,我想知道为什么在OAuth 2.0中的双方认证中需要client_idclient_secret

我正在使用grant_type =密码并发送用户名& post方法中的密码,但在此我收到错误,在请求正文或标题中找不到客户端凭据。当我通过client_idclient_secret时,我可以获得access_token。

我想了解为什么client_idclient_secret是2记录身份验证所必需的。我认为这是我能解决困惑的最佳场所。

更具体地说,我有一个移动应用程序,它通过Web服务API与服务器通信,我们没有任何第三方使用,这就是我们使用双方式身份验证的原因,但我对此感到困惑使用client_idclient_secret。如果我问的是愚蠢的问题,请原谅我,但对我来说这是一个很大的混乱。

2 个答案:

答案 0 :(得分:3)

客户端ID和客户端密钥

当您在第三方注册您的应用时,您会收到以上两种情况。 客户端ID被视为公共ID,用于构建登录URL。客户机密必须保密。如果部署的应用程序无法保密,例如Javascript或本机应用程序,则不使用该秘密。

我有一篇完美的文章给你:Oauth Simplified

希望这可以消除你的困惑!

答案 1 :(得分:0)

您使用的所谓资源所有者密码凭据(ROPC)授权中不需要客户端身份验证,但它是可选的。该规范允许机密客户端(即具有秘密的客户端)和公共客户端(即没有客户机密的客户端),如:https://tools.ietf.org/html/rfc6749#section-4.3.2中所述。显然,您的授权服务器已配置或硬连线,需要它。

如果它是硬接线的,可能是由于对规范的解释过于严格,如答案中所述:Resource Owner Password Credentials Grant - Public Client