0

我想访问使用 Kerberos 身份验证的服务。服务管理员给了我一个spnego.service.keytab正确的 Kerberos 主体和领域的文件。我可以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 命令起作用?

4

1 回答 1

1

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

于 2017-08-30T11:04:38.680 回答