获取访问令牌的oauth2中的错误凭据响应

时间:2018-01-23 13:12:57

标签: python oauth-2.0 python-requests

我正在尝试从服务器获取加密令牌oauth2,但响应仍然说错误凭据,

    headers = {
        'Accept': 'application/json',
        'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
        'grant_type': 'client_credentials',
    }
    url = "http://172.15.39.95:8080/oauth/token"
    params = {"grant_type": "password", "username": "xxxxx", "password": "xxxxxx"}
    client_auth = requests.auth.HTTPBasicAuth(CLIENT_ID, CLIENT_SECRET)
    x = requests.get(url, params=params, auth=client_auth, headers=headers)

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

我想您要使用资源所有者密码凭据授权。请求方法应该是POST,而不是GET(如果我正确读取你的python代码)。请参阅OAuth2 RFC中的示例。 我希望服务器返回“HTTP 405 Method Not Allowed”错误。

您应该删除grant_type: client_credentials标题 - 您已将grant_type指定为参数,其值为password

由于您没有使用POST请求方法,因此很难说“错误凭据”的含义。当你改变它时,你应该得到更具体的回应。如果您的基本身份验证客户端ID +客户端密码无效,则应该

 HTTP/1.1 401 Unauthorized
 Content-Type: application/json;charset=UTF-8
 Cache-Control: no-store
 Pragma: no-cache

 {
   "error":"invalid_client"
 }

如果您的username + password参数无效,您应该

 HTTP/1.1 400 Bad Request
 Content-Type: application/json;charset=UTF-8
 Cache-Control: no-store
 Pragma: no-cache

 {
   "error":"invalid_grant"
 }

有关更多错误代码,请参阅OAuth2 RFC