inveniosoftware / inveniosoftware/xrootdpyfs

URL args like krb5.k5ccname do not work (apparently due to url encoding)

Open
#79 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
8
Forks
20
PR merge metrics
No merged PRs in 30d

Description

It looks like the xrootd client does not want them urlencoded, at least that's my guess looking at the debug output line right after "Seckrb5: getCredentials".

```
[adrian@blackhole:~ $]> XrdSecDEBUG=1 KRB5CCNAME=FILE:/dev/null python -c "from xrootdpyfs import XRootDPyFS; print XRootDPyFS('root://eospublic.cern.ch//', {'xrd.wantprot': 'krb5', 'xrd.k5ccname': 'FILE:/tmp/krb5cc_1000'})._client.ping()"
sec_Client: protocol request for host eospublic.cern.ch token='&P=krb5,host/eospublic-srv-m2.cern.ch@CERN.CH&P=gsi,v:10300,c:ssl,ca:5168735f.0|4339b4bc.0&P=unix&P=sss,0.13:/etc/eos.keytab'
sec_PM: Loaded krb5 protocol object from libXrdSeckrb5.so
sec_PM: Using krb5 protocol, args='host/eospublic-srv-m2.cern.ch@CERN.CH'
Seckrb5: getCredentials
Seckrb5: FILE%3A%2Ftmp%2Fkrb5cc_1000
Seckrb5: init context
Seckrb5: cc set default name
Seckrb5: cc default
Seckrb5: context lock
Seckrb5: context locked
Seckrb5: get_krbCreds: err copying client name to creds; No credentials cache found
sec_Client: protocol request for host eospublic.cern.ch token='&P=gsi,v:10300,c:ssl,ca:5168735f.0|4339b4bc.0&P=unix&P=sss,0.13:/etc/eos.keytab'
sec_PM: Skipping gsi only want krb5
sec_PM: Skipping unix only want krb5
sec_PM: Skipping sss only want krb5
(, None)

```

After changing the query string generation to `'&'.join('{0}={1}'.format(*x) for x in self.queryargs.items())`, auth seems to work fine:

```
[adrian@blackhole:~ $]> XrdSecDEBUG=1 KRB5CCNAME=FILE:/dev/null python -c "from xrootdpyfs import XRootDPyFS; print XRootDPyFS('root://eospublic.cern.ch//', {'xrd.wantprot': 'krb5', 'xrd.k5ccname': 'FILE:/tmp/krb5cc_1000'})._client.ping()"
sec_Client: protocol request for host eospublic.cern.ch token='&P=krb5,host/eospublic-srv-m2.cern.ch@CERN.CH&P=gsi,v:10300,c:ssl,ca:5168735f.0|4339b4bc.0&P=unix&P=sss,0.13:/etc/eos.keytab'
sec_PM: Loaded krb5 protocol object from libXrdSeckrb5.so
sec_PM: Using krb5 protocol, args='host/eospublic-srv-m2.cern.ch@CERN.CH'
Seckrb5: getCredentials
Seckrb5: FILE:/tmp/krb5cc_1000
Seckrb5: init context
Seckrb5: cc set default name
Seckrb5: cc default
Seckrb5: context lock
Seckrb5: context locked
Seckrb5: Returned 2637 bytes of creds; p=host/eospublic-srv-m2.cern.ch@CERN.CH
(, None)
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.