使用 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 身份验证访问资源,因此执行程序将使用它的凭据,我尝试将 user
和 password
参数定义为空,但这失败了。
所以我想知道 uri
模块是否支持 SPNEGO 以及我应该怎么做?
谢谢
在此处卷曲提交...
这行不通。 Curl 无法为您进行身份验证。身份验证必须在登录 machine/server 时进行。既然你想自动化,创建一个服务帐户,导出密钥表并将密钥表文件与 env var KRB5_CLIENT_KTNAME
一起提供给 Ansible。这会起作用,但你需要 MIT Kerberos。
请阅读我的。如果您在 Active Directory 环境中,您可以轻松使用 msktutil(1)
,这将为您完成所有的魔法。
使用 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 身份验证访问资源,因此执行程序将使用它的凭据,我尝试将 user
和 password
参数定义为空,但这失败了。
所以我想知道 uri
模块是否支持 SPNEGO 以及我应该怎么做?
谢谢
在此处卷曲提交...
这行不通。 Curl 无法为您进行身份验证。身份验证必须在登录 machine/server 时进行。既然你想自动化,创建一个服务帐户,导出密钥表并将密钥表文件与 env var KRB5_CLIENT_KTNAME
一起提供给 Ansible。这会起作用,但你需要 MIT Kerberos。
请阅读我的msktutil(1)
,这将为您完成所有的魔法。