使用 uri 模块的 SPNEGO 身份验证

SPNEGO authentication with uri module

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

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

谢谢

在此处卷曲提交...

这行不通。 Curl 无法为您进行身份验证。身份验证必须在登录 machine/server 时进行。既然你想自动化,创建一个服务帐户,导出密钥表并将密钥表文件与 env var KRB5_CLIENT_KTNAME 一起提供给 Ansible。这会起作用,但你需要 MIT Kerberos。

请阅读我的。如果您在 Active Directory 环境中,您可以轻松使用 msktutil(1),这将为您完成所有的魔法。