出于好奇,我想知道为什么在OAuth 2.0中的双方认证中需要client_id
和client_secret
?
我正在使用grant_type =密码并发送用户名& post方法中的密码,但在此我收到错误,在请求正文或标题中找不到客户端凭据。当我通过client_id
和client_secret
时,我可以获得access_token。
我想了解为什么client_id
和client_secret
是2记录身份验证所必需的。我认为这是我能解决困惑的最佳场所。
更具体地说,我有一个移动应用程序,它通过Web服务API与服务器通信,我们没有任何第三方使用,这就是我们使用双方式身份验证的原因,但我对此感到困惑使用client_id
和client_secret
。如果我问的是愚蠢的问题,请原谅我,但对我来说这是一个很大的混乱。
答案 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