描述如何连接到kerberos安全端点的文档显示了以下内容:
curl -i --negotiate -u : "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=..."
这个 -u 必须提供标志,但被curl忽略。是吗 --negotiate 选项使curl查找预先使用 kinit 命令,还是将提示提供凭据?如果它查找keytab文件,那么命令将查找什么文件名?
-u
--negotiate
kinit
neskvpey1#
答案是:
[ { "operation": "shift", "spec": { "scheduler": { "schedulerInfo": { "usedCapacity": "root", "queues": { "queue": { "*": { "@usedCapacity": "@queueName" } } } } } } }, { "operation": "shift", "spec": { "*": "&UsedCapacity" } } ]
hfwmuf9z2#
检查 curl 版本 $ curl -V -应支持“gss协商”功能使用登录kinit $ kinit <user-id> 使用 curl $ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://localhost:14000/webhdfs/v1/?op=liststatus “--negotiate”选项启用spnego“-u”选项是必需的,但被忽略(使用kinit期间指定的原则)“-b”&“-c”选项用于存储和发送http Cookie。
$ curl -V
$ kinit <user-id>
$ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://localhost:14000/webhdfs/v1/?op=liststatus
kiayqfof3#
做一个偶尔的贡献者 curl 在那个地区。以下是您需要知道的: curl(1) 它本身对kerberos一无所知,不会与您的凭证缓存或keytab文件进行交互。它将把所有调用委托给一个gss api实现,这将为您带来奇迹。什么魔力取决于图书馆,海姆达尔和麻省理工学院kerberos。基于您的问题,我假设您对kerberos知之甚少,只想自动化对由spnego保护的rest端点的api调用。以下是您需要做的:有一个类似unix的操作系统至少安装mit kerberos 1.11至少安装 curl 7.38.0针对mit kerberos请验证 curl --version 提及gss api和spnego以及 ldd 链接到你的mit kerberos版本。使用创建服务主体的客户机密钥表 ktutil 或者 mskutil 尝试通过以下方式获得具有该客户机密钥表的tgt kinit -k -t <path-to-keytab> <principal-from-keytab> 验证 klist 你有一张罚单环境现在准备就绪:出口 KRB5CCNAME=<some-non-default-path> 出口 KRB5_CLIENT_KTNAME=<path-to-keytab> 援引 curl --negotiate -u : <URL> mitkerberos将检测到两个环境变量都已设置,检查它们,用您的keytab自动获取tgt,请求服务票证并传递给 curl . 你完了。注意:这不适用于heimdal。
curl
curl(1)
curl --version
ldd
ktutil
mskutil
kinit -k -t <path-to-keytab> <principal-from-keytab>
klist
KRB5CCNAME=<some-non-default-path>
KRB5_CLIENT_KTNAME=<path-to-keytab>
curl --negotiate -u : <URL>
3条答案
按热度按时间neskvpey1#
答案是:
hfwmuf9z2#
检查 curl 版本
$ curl -V
-应支持“gss协商”功能使用登录
kinit
$ kinit <user-id>
使用 curl$ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://localhost:14000/webhdfs/v1/?op=liststatus
“--negotiate”选项启用spnego“-u”选项是必需的,但被忽略(使用kinit期间指定的原则)
“-b”&“-c”选项用于存储和发送http Cookie。
kiayqfof3#
做一个偶尔的贡献者
curl
在那个地区。以下是您需要知道的:curl(1)
它本身对kerberos一无所知,不会与您的凭证缓存或keytab文件进行交互。它将把所有调用委托给一个gss api实现,这将为您带来奇迹。什么魔力取决于图书馆,海姆达尔和麻省理工学院kerberos。基于您的问题,我假设您对kerberos知之甚少,只想自动化对由spnego保护的rest端点的api调用。
以下是您需要做的:
有一个类似unix的操作系统
至少安装mit kerberos 1.11
至少安装
curl
7.38.0针对mit kerberos请验证
curl --version
提及gss api和spnego以及ldd
链接到你的mit kerberos版本。使用创建服务主体的客户机密钥表
ktutil
或者mskutil
尝试通过以下方式获得具有该客户机密钥表的tgtkinit -k -t <path-to-keytab> <principal-from-keytab>
验证klist
你有一张罚单环境现在准备就绪:
出口
KRB5CCNAME=<some-non-default-path>
出口KRB5_CLIENT_KTNAME=<path-to-keytab>
援引curl --negotiate -u : <URL>
mitkerberos将检测到两个环境变量都已设置,检查它们,用您的keytab自动获取tgt,请求服务票证并传递给curl
. 你完了。注意:这不适用于heimdal。