描述如何连接到kerberos安全端点的documentation显示以下内容:
curl -i --negotiate -u : "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=..."
必须提供-u
标志,但curl会忽略它。
--negotiate
选项是否导致curl查找事先使用kinit
命令创建的keytab,或者是否会提示输入凭据?
如果它查找keytab文件,该命令将查找哪个文件名?
答案 0 :(得分:37)
在该领域成为curl
的一次性贡献者。以下是您需要了解的内容:
curl(1)
本身对Kerberos一无所知,也不会与您的凭据缓存和keytab文件进行交互。它会将所有调用委托给GSS-API实现,这将为您带来魔力。什么魔法取决于图书馆,Heimdal和MIT Kerberos。
根据您的问题,我假设您对Kerberos知之甚少,并希望自动对SPNEGO保护的REST端点进行API调用。
以下是您需要做的事情:
curl
7.38.0 curl --version
提及GSS-API 和 SPNEGO以及与您的MIT Kerberos版本相关联的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>
MIT Kerberos将检测到两个环境变量都已设置,检查它们,使用您的keytab自动获取TGT,请求服务票证并传递给curl
。你完成了。
注意:这不适用于Heimdal。
答案 1 :(得分:9)
检查卷曲版本
$ curl -V
- 它应该支持该功能&#34; GSS-Negotiate&#34;
使用kinit
$ kinit <user-id>
使用curl
$ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://localhost:14000/webhdfs/v1/?op=liststatus
&#34; - 协商&#34;选项启用SPNEGO
&#34; -u&#34;选项是必需的但是被忽略(使用kinit期间指定的原则)
&#34; -b&#34; &安培; &#34; -c&#34;选项用于存储和发送http cookie。
答案 2 :(得分:-1)
答案是
[
{
"operation": "shift",
"spec": {
"scheduler": {
"schedulerInfo": {
"usedCapacity": "root",
"queues": {
"queue": {
"*": {
"@usedCapacity": "@queueName"
}
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": "&UsedCapacity"
}
}
]