我想访问使用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命令有效,需要做些什么?
答案 0 :(得分:1)
Windows 7笔记本电脑必须是生成密钥表的Kerberos领域的一部分。 Windows 7笔记本电脑还必须支持密钥表和服务使用的加密。 Curl不是本机Windows命令,因此您必须将支持加密库导入Windows 7笔记本电脑才能使Curl正常工作。