在执行 kinit
curl -x POST --negotiate -u : http://host.mydomain.net:14000/my/web/resource
你可以看到我只是通过 -u :
而没有实际传递任何用户/密码,它之所以有效是因为 --negotiate
使用 ansible 我可以访问资源,但我需要输入我的凭据
- uri:
url: "http://host.mydomain.net:14000/my/web/resource"
return_content: true
method: POST
headers:
Content-Type: "application/x-www-form-urlencoded"
user: "{{ myuser }}"
password: "{{ mypass }}"
register: login
- debug:
msg: "{{ login.content }}"
现在我喜欢只使用 Kerberos 身份验证访问资源,以便执行程序将使用它的凭据,我尝试将 user
和 password
参数定义为空,但这失败了。
所以我想知道 uri
模块是否支持 SPNEGO 以及我应该怎么做?
谢谢
最佳答案
在这里 curl 提交者...
这是行不通的。 Curl 无法为您进行身份验证。身份验证必须在登录机器/服务器时进行。既然你想自动化,创建一个服务帐户,导出 key 表并将 key 表文件与 env var KRB5_CLIENT_KTNAME
一起提供给 Ansible。这会起作用,但您需要 MIT Kerberos。
请阅读我的canonical answer对此。如果您在 Active Directory 环境中,您可以轻松使用 msktutil(1)
,它会为您完成所有的魔法。
关于http - 使用 uri 模块的 SPNEGO 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51668911/