使用uri模块进行SPNEGO身份验证

时间:2018-08-03 08:58:54

标签: http ansible uri kerberos spnego

在执行kinit

之后,可以使用curl在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身份验证来访问资源,因此执行者将使用它的凭据,我尝试将userpassword参数定义为空,但这会失败。

所以我想知道uri模块是否支持SPNEGO,我应该怎么做?

谢谢

1 个答案:

答案 0 :(得分:0)

在这里卷曲提交器...

这将不起作用。 Curl无法为您进行身份验证。认证必须在机器/服务器登录时进行。由于要自动执行此操作,因此创建一个服务帐户,导出密钥表,并将密钥表文件的env var KRB5_CLIENT_KTNAME提供给Ansible。这将起作用,但是您需要MIT Kerberos。

请阅读我的canonical answer。如果您在Active Directory环境中,则可以轻松使用msktutil(1),它将为您解决所有问题。