Windows 在不提供凭据的情况下,无法使用(win_)uri模块从API检索信息 形势

Windows 在不提供凭据的情况下,无法使用(win_)uri模块从API检索信息 形势,windows,iis,ansible,Windows,Iis,Ansible,我有一个剧本来配置Windows服务器。该剧本是通过Ansible从RHEL服务器执行的。RHEL服务器具有所有必需的kerberos配置,Ansible配置为使用windows主机的kerberos身份验证通过HTTP使用winrm。所有这些都很好,我只做了一次,一切都正常 对于playbook中的一项任务,我需要首先从RESTAPI检索一些信息。REST API使用IIS托管在Windows服务器上,并具有Windows身份验证 问题 我想使用win_uri或uri模块从RESTAPI检索信

我有一个剧本来配置Windows服务器。该剧本是通过Ansible从RHEL服务器执行的。RHEL服务器具有所有必需的kerberos配置,Ansible配置为使用windows主机的kerberos身份验证通过HTTP使用winrm。所有这些都很好,我只做了一次,一切都正常

对于playbook中的一项任务,我需要首先从RESTAPI检索一些信息。REST API使用IIS托管在Windows服务器上,并具有Windows身份验证

问题 我想使用win_uri或uri模块从RESTAPI检索信息,但我不想提供凭据。它使用win_外壳模块工作,为什么不适用于win_uri模块

剧本 什么有效 两个shell任务都可以正常工作,无需输入凭据

什么不起作用 使用win_uri模块仅在我传递不需要的凭据时有效。 win_uri模块是在目标主机上的系统上下文下执行的,由于shell命令可以工作,我认为win_uri模块也应该工作

在本地主机上使用uri模块不起作用。我尝试了几个参数组合,这些都是注释行,但我似乎无法让它工作

输出
根据您的输出,您的iis被设置为使用ntlm,即不带kerberos的windows身份验证,它在不带ansible的服务器上工作的原因是您进行了身份验证。
将iis设置更改为匿名

根据您的输出,您的iis被设置为使用ntlm(也称为windows身份验证)而不使用kerberos,它在不使用ansible的服务器上工作的原因是您进行了身份验证。 将iis设置更改为“匿名”

是否尝试过将“验证证书”选项更改为“否”或将“基本验证证书”选项更改为“是”?是否尝试过将“验证证书”选项更改为“否”或将“基本验证证书”选项更改为“是”?
--- 
- name: API Test 
  vars_files: 
    - secret.yml 
  vars: 
    api_url: http://iiswebserver.my.domain/api/item/0 
  hosts: 
    - windowshost.my.domain 
  gather_facts: no 
  #debugger: on_failed 

  tasks: 

    - name: Win Shell 
      win_shell: | 
        Invoke-RestMethod -Method Get -Uri {{ api_url }} -UseDefaultCredentials 
      register: win_shell_get 

    - name: Local Shell 
      shell: | 
        curl --negotiate -u : {{ api_url }} 
      register: shell_get 
      delegate_to: localhost 

    - name: Get API info remote 
      win_uri: 
        url: "{{ api_url }}" 
        method: GET 
        return_content: yes 
        user: "{{ secret_user }}" 
        password: "{{ secret_password }}" 
      #delegate_to: localhost 
      register: api_get 

    - name: Get API info local 
      uri: 
        url: "{{ api_url }}" 
        method: GET 
        return_content: yes 
        #user: "{{ secret_user }}" 
        #password: "{{ secret_password }}" 
        #other: --negotiate 
      delegate_to: localhost 
      register: api_get_local