Chr*_*now 25 curl hadoop kerberos webhdfs keytab
描述如何连接到kerberos安全端点的文档显示以下内容:
curl -i --negotiate -u : "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=..."
Run Code Online (Sandbox Code Playgroud)
-u必须提供该标志,但curl会忽略该标志.
该--negotiate选项是否导致curl查找事先使用该kinit命令创建的keytab ,或者是否会卷曲提示输入凭据?
如果它查找keytab文件,该命令将查找哪个文件名?
Mic*_*l-O 45
成为该领域的一次性贡献者curl.以下是您需要了解的内容:
curl(1)它本身对Kerberos一无所知,也不会与您的凭证缓存和keytab文件进行交互.它会将所有调用委托给GSS-API实现,这将为您带来魔力.什么魔法取决于图书馆,Heimdal和MIT Kerberos.
根据您的问题,我假设您对Kerberos知之甚少,并希望自动对SPNEGO保护的REST端点进行API调用.
这是你需要做的:
curl针对MIT Kerberos 安装至少7.38.0curl --version提及GSS-API 和 SPNEGO并与ldd您的MIT Kerberos版本链接来验证这一点.ktutilmskutilkinit -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.
Avi*_*ddy 10
检查卷曲版本
$ curl -V - 它应该支持"GSS-Negotiate"功能
登录使用 kinit
$ kinit <user-id>
使用卷曲
$ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://localhost:14000/webhdfs/v1/?op=liststatus
" - 谈判"选项启用SPNEGO
"-u"选项是必需的但是被忽略(使用kinit期间指定的原则)
"-b"和"-c"选项用于存储和发送http cookie.
| 归档时间: |
|
| 查看次数: |
41520 次 |
| 最近记录: |