我想访问使用 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 命令起作用?