<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
apt_key module fails to download keys from username/password protected address if response from that address redirects to a different url

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
apt_key

##### ANSIBLE VERSION
```
ansible 2.9.10
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/tadej/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.3 (default, May 29 2020, 00:00:00) [GCC 10.1.1 20200507 (Red Hat 10.1.1-1)]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below

```

##### OS / ENVIRONMENT
Ansible is running on Fedora 32, target system was Debian Buster.


##### STEPS TO REPRODUCE
On apt system run

    $ ansible-playbook playbook.yaml

where *playbook.yaml* contains:

<!--- Paste example playbooks or commands between quotes below -->
```yaml
- hosts: localhost
  become: true
  tasks:
    - apt_key:
        url: https://read-token:@packagecloud.io/repo/channel/gpgkey
```

##### EXPECTED RESULTS
The apt_key module should download the key and add it to the system.


##### ACTUAL RESULTS
The key file is not downloaded.

<!--- Paste verbatim command output between quotes -->
```paste below
TASK [sensu.sensu_go.install : Add apt key] *************************************************************************                                                                                                                         
task path: /vagrant/ansible_collections/sensu/sensu_go/roles/install/tasks/apt/prepare.yml:17                                                                                                                                                 
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: vagrant                                                                                                                                                                                      
<127.0.0.1> EXEC /bin/sh -c 'echo ~vagrant && sleep 0'                                                                                                                                                                                        
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/vagrant/.ansible/tmp `"&& mkdir /home/vagrant/.ansible/tmp/ansible-tmp-1596123703.15-7698-147352890428496 && echo ansible-tmp-1596123703.15-7698-147352890428496="` echo /home/vagrant/.ansible/tmp/ansible-tmp-1596123703.15-7698-147352890428496 `" ) && sleep 0'                                                                                                                                                       
Using module file /home/vagrant/venv/local/lib/python2.7/site-packages/ansible/modules/packaging/os/apt_key.py                                                                                                                                
<127.0.0.1> PUT /home/vagrant/.ansible/tmp/ansible-local-73130sQlx2/tmpTka0Og TO /home/vagrant/.ansible/tmp/ansible-tmp-1596123703.15-7698-147352890428496/AnsiballZ_apt_key.py                                                               
<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/vagrant/.ansible/tmp/ansible-tmp-1596123703.15-7698-147352890428496/ /home/vagrant/.ansible/tmp/ansible-tmp-1596123703.15-7698-147352890428496/AnsiballZ_apt_key.py && sleep 0'                  
<127.0.0.1> EXEC /bin/sh -c 'sudo -H -S -n  -u root /bin/sh -c '"'"'echo BECOME-SUCCESS-arcvvjrkaonnmhuagbribxaggrraarss ; /home/vagrant/venv/bin/python2 /home/vagrant/.ansible/tmp/ansible-tmp-1596123703.15-7698-147352890428496/AnsiballZ_apt_key.py'"'"' && sleep 0'                                
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /home/vagrant/.ansible/tmp/ansible-tmp-1596123703.15-7698-147352890428496/ > /dev/null 2>&1 && sleep 0'
fatal: [localhost]: FAILED! => {                           
    "changed": false,                                      
    "invocation": {                                        
        "module_args": {                                   
            "data": null,
            "file": null,                                  
            "id": null,                                    
            "key": null,                                   
            "keyring": null,                               
            "keyserver": null,                             
            "state": "present",                            
            "url": "https://<redacted>:@packagecloud.io/sensu/release-candidate/gpgkey", 
            "validate_certs": true                         
        }                                                  
    },                                                     
    "msg": "Failed to download key at https://<redacted>:@packagecloud.io/sensu/release-candidate/gpgkey: HTTP Error 401: Unauthorized"
}
```

##### ADDITIONAL INFO

Curlng the url prints:

```
$ curl -v https://<redacted>:@packagecloud.io/sensu/release-candidate/gpgkey
...
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 302 
< date: Thu, 30 Jul 2020 15:49:16 GMT
< content-type: text/html;charset=utf-8
< content-length: 0
< location: https://d18dy6y14fq314.cloudfront.net/188/13711/gpg/sensu-release-candidate-44E6C781E1E7FF69.pub.gpg?t=<redacted>
...
```

If we add the `-L` switch to `curl`, the file is downloaded just fine. I can also get module to download the file if I force the basic authentication in the `ansible.module_utils.urls.Request.open(...)` call, but apt_key module does not have an argument that would control this parameter.
"""
    Takes a list of key ids, and converts them to the 'short' format,
    by reducing them to their last 8 characters.
    """
    short = []
    for key in key_id_list:
        short.append(key[-8:])
    return short
def download_key(module, url):
    
    
    if url is None:
        module.fail_json(msg="needed a URL but was not specified")
    try:
        rsp, info = fetch_url(module, url)
        if info['status'] != 200:
            module.fail_json(msg="Failed to download key at %s: %s" % (url, info['msg']))
        return rsp.read()
    except Exception:
        module.fail_json(msg="error getting key id from url: %s" % url, traceback=format_exc())
def import_key(module, keyring, keyserver, key_id):