【问题标题】:SPNEGO authentication with uri module使用 uri 模块的 SPNEGO 身份验证
【发布时间】:2018-08-03 08:58:54
【问题描述】:

在我执行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以及我应该怎么做?

谢谢

【问题讨论】:

  • 您找到替代解决方案了吗?

标签: http ansible uri kerberos spnego


【解决方案1】:

在这里卷曲提交者...

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    相关资源
    最近更新 更多