获取gssexception:在kerberised集群上调用hdfs api时检测到有缺陷的令牌错误

2lpgd968  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(195)

我有一个带有3个节点的kerberised cdhv5.14集群

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身份验证要求缓存控制:必须重新验证,无缓存,无存储日期:2018年5月30日星期三02:50:04 gmt pragma:无缓存日期:2018年5月30日星期三02:50:04 gmt pragma:无缓存内容类型:text/html;charset=iso-8859-1 x-frame-options:sameorigin www authenticate:negotiate set cookie:hadoop.auth=;路径=/;httponly内容长度:1409
http/1.1 200确定缓存控制:无缓存过期:2018年5月30日星期三02:50:04 gmt日期:2018年5月30日星期三02:50:04 gmt pragma:无缓存过期:2018年5月30日星期三02:50:04 gmt日期:星期三,2018年5月30日02:50:04 gmt pragma:无缓存内容类型:application/json x-frame-options:sameorigin www验证:协商ygygcsqgsib3egecagiab1cwvaadagefoqmcaq+istbhoamacariqq+6seu0ssygmoqn4hdyksq55zcp+jubo/jk8/bgjok5ncmdlbrfpmsbczxvvjnhlg9ipacgvm8v0jqxtm5ufq=set cookie:hadoop.auth=“u=x&p=x@hostname&t=kerberos&e=1527684604664&s=tvsresdmbgv0to8hopp8mlxyiso="; 路径=/;httponly传输编码:分块
它给出了正确的答案,我在这里遗漏了什么?感谢您的帮助。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题