使用curl,在执行kinit
之后,我可以通过这种方式访问具有Kerberos/SPNEGO的Web服务上的HTTP资源
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,我应该怎么做?
感谢
在此处卷曲comitter。。。
这是行不通的。Curl无法为您进行身份验证。身份验证必须在登录到计算机/服务器时进行。由于您想自动执行此操作,请创建一个服务帐户,导出keytab,并将带有env varKRB5_CLIENT_KTNAME
的keytab文件提供给Ansible。这将起作用,但您需要MIT Kerberos。
请阅读我对此的规范答案。如果您在Active Directory环境中,您可以轻松使用msktutil(1)
,它将为您带来所有的魔力。