在Windows上卷曲:“GSSException:检测到有缺陷的令牌(机制级别:GSSHeader找不到正确的标签)”

时间:2017-08-30 10:00:34

标签: windows curl kerberos spnego livy

我想访问使用Kerberos身份验证的服务。服务管理员为我提供了一个spnego.service.keytab文件,用于正确的Kerberos主体和领域。我可以针对该keytab文件运行kinit以成功获取Kerberos票证。但是当我尝试使用群集外的Windows 7笔记本电脑中的curl访问该服务时,我收到此错误:

org.apache.hadoop.security.authentication.client.AuthenticationException: GSSException: Defective token detected (Mechanism level: GSSHeader did not find the right tag)

服务恰好是Livy,但是同事在同一群集上使用Oozie会遇到同样的错误,所以我认为服务本身的细节并不重要。

以下是完整的详细信息:

>curl --negotiate -u : http://<livy_server_host>:<port>/sessions/
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Error 403 </title>
</head>
<body>
<h2>HTTP ERROR: 403</h2>
<p>Problem accessing /sessions/. Reason:
<pre>    org.apache.hadoop.security.authentication.client.AuthenticationException: GSSException: Defective token detected (Mechanism level: GSSHeader did not find the right tag)</pre></p>
<hr /><i><small>Powered by Jetty://</small></i>
</body>
</html>

要使curl命令有效,需要做些什么?

1 个答案:

答案 0 :(得分:1)

Windows 7笔记本电脑必须是生成密钥表的Kerberos领域的一部分。 Windows 7笔记本电脑还必须支持密钥表和服务使用的加密。 Curl不是本机Windows命令,因此您必须将支持加密库导入Windows 7笔记本电脑才能使Curl正常工作。