获取GSSException:在kerberised集群上调用HDFS API时检测到令牌检测错误

时间:2018-05-30 02:41:41

标签: python-2.7 api hadoop kerberos cloudera-cdh

我有一个带有3个节点的kerberised CDH v5.14集群。我试图使用python调用HDFS API,如下所示

baseurl = "http://<host_name>:50070/webhdfs/v1/prod/?op=LISTSTATUS"

__, krb_context = kerberos.authGSSClientInit("HTTP/<host_name>")
#kerberos.authGSSClientStep(krb_context, "")
negotiate_details = kerberos.authGSSClientResponse(krb_context)
headers = {"Authorization": "Negotiate " + str(negotiate_details)}
r = requests.get(baseurl, headers=headers)
print r.status_code

返回以下错误

GSSException: Defective
token detected (Mechanism level: GSSHeader did not find the right tag)

HTTP ERROR 403

但是当我使用 curl

运行它时,同样可行
curl -i --negotiate -u: http://<host_name>:50070/webhdfs/v1/prod/?op=LISTSTATUS
  

HTTP / 1.1 401身份验证需要缓存控制:   must-revalidate,no-cache,no-store日期:2018年5月30日星期三02:50:04 GMT   Pragma:no-cache日期:2018年5月30日星期三02:50:04 GMT Pragma:no-cache   内容类型:text / html; charset = iso-8859-1 X-FRAME-OPTIONS:   SAMEORIGIN WWW-Authenticate:Negotiate Set-Cookie:hadoop.auth =;   路径= /; HttpOnly Content-Length:1409

     

HTTP / 1.1 200 OK缓存控制:无缓存过期时间:2018年5月30日星期三   格林威治标准时间02:50:04日期:2018年5月30日星期三02:50:04 GMT Pragma:no-cache   到期日:2018年5月30日星期三格林尼治标准时间02:50:04日期:2018年5月30日星期三02:50:04   GMT Pragma:no-cache Content-Type:application / json X-FRAME-OPTIONS:   SAMEORIGIN WWW-Authenticate:谈判   YGYGCSqGSIb3EgECAgIAb1cwVaADAgEFoQMCAQ + iSTBHoAMCAReiQAQ + 6Seu0SSYGmoqN4hdykSQ55ZcP + juBO / JK8 / BGjoK5NCmdlBRFPMSbCZXvVjNHLg9iPACGvM8V0jqXTM5UfQ =   设置Cookie:   hadoop.auth = “U = XXXX&安培; P = XXXX @ HOSTNAME&amp; T公司的Kerberos =急症= 1527684604664&安培; S = tVsrEsDMBGV0To8hOPp8mLxyiSo =”;   路径= /; HttpOnly Transfer-Encoding:chunked

它给出了正确的答案,我在这里缺少什么?任何帮助表示赞赏。

0 个答案:

没有答案