Uproot 5.2.0+ no longer respects URL parameters
chrisburr opened this issue · comments
Chris Burr commented
Since moving to fsspec uproot now strips URL parameters from XRootD URLs. In this case I use them to add EOS tokens to authenticate, but I've also known them be required to even access files for quirks of the storage system.
Running this on lxplus at CERN:
export MYEOSTOKEN=$(eos token --path /eos/lhcb/user/c/cburr/test1/ --permission r)
# Destroy kerberos credentials so the token in the URL is the only available auth method
kdestroy
5.2.2
In [1]: import os
...: import uproot
...: print(f"{uproot.__version__}")
...: f = uproot.open(f"root://eoslhcb.cern.ch//eos/lhcb/user/c/cburr/test.root?xrd.wantprot=unix&authz={os.environ['MYEOSTOKEN']}")
...: f.keys()
5.2.2
... truncated
OSError: File did not open properly: [ERROR] Server responded with an error: [3010] Unable to give access - user access restricted - unauthorized identity used ; Permission denied
5.1.2
In [1]: import os
...: import uproot
...: print(f"{uproot.__version__}")
...: f = uproot.open(f"root://eoslhcb.cern.ch//eos/lhcb/user/c/cburr/test.root?xrd.wantprot=unix&authz={os.environ['MYEOSTOKEN']}")
...: f.keys()
5.1.2
Out[1]:
['HltRoutingBitsMonitor;1',
'HltRoutingBitsMonitor/rb_frac;1',
'HltRoutingBitsMonitor/rb_count;1',
'HltDecReportsMonitor;1',
'HltDecReportsMonitor/pass_frac_ul;1',
'HltDecReportsMonitor/pass_frac;1',
'HltDecReportsMonitor/pass_count_ul;1',
'HltDecReportsMonitor/pass_count;1']