Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
de224f0
feat(dpop): initial dpop support
Avantol13 Jul 15, 2026
7df2e93
feat(dpop): return more info in validate call
Avantol13 Jul 16, 2026
af233c8
feat(jwt): validate handles pur, and denylist, more closely match typ…
Avantol13 Jul 21, 2026
a8ae229
fix(dpop): handle rsa keys, improve return of dpop functions, more tests
Avantol13 Jul 22, 2026
74a9682
feat(secret): allow passing through shared secret for nonce (so it ca…
Avantol13 Jul 22, 2026
a6690eb
chore(deps): increase min version of pyjwt for required types
Avantol13 Jul 23, 2026
fd68324
chore(dpop): make compute_ath public
Avantol13 Jul 23, 2026
b6ef43d
fix(nonce): return new nonce on error
Avantol13 Jul 24, 2026
33e7e9b
chore(logs): debug logs
Avantol13 Jul 27, 2026
04f5df5
fix(dpop): helpful error with invalid token info passed
Avantol13 Jul 27, 2026
a3e2727
fix(dpop): correct nonce error handling per the spec
Avantol13 Jul 27, 2026
ca83aba
chore(dpop): debug lines
Avantol13 Jul 27, 2026
5f3b0c3
chore(dpop): update error
Avantol13 Jul 27, 2026
ce2c490
temp(dpop): debug lines
Avantol13 Jul 28, 2026
7794485
fix(dpop): handle dpop prefix in header
Avantol13 Jul 28, 2026
7457116
chore(dpop): debug lines
Avantol13 Jul 28, 2026
b2120bc
fix(dpop): safely handle dpop header
Avantol13 Jul 28, 2026
babc33f
chore(dpop): log ath
Avantol13 Jul 28, 2026
5f2ca22
chore(dpop): more logs
Avantol13 Jul 28, 2026
54a1d71
chore(dpop): increase timeout and more logs on public key fetching
Avantol13 Jul 28, 2026
68b32d9
fix(keys): handle custom and official public keys endpoints
Avantol13 Jul 28, 2026
ea5257a
chore(logs): update log levels
Avantol13 Jul 28, 2026
a5aefff
fix(dpop): increase public keys timeout
Avantol13 Jul 29, 2026
9e9db82
chore(dpop): more logs
Avantol13 Jul 29, 2026
62e0d66
chore(dpop): more logging
Avantol13 Jul 29, 2026
ac55e55
chore(tools): update and small black fixes
Avantol13 Aug 10, 2026
86cdf9a
feat(dpop): migrate to httpx2, edge cases, cleanup, tests
Avantol13 Aug 11, 2026
fbdd95b
fix(issuers): require allowed_iss, don't blindly allow all
Avantol13 Aug 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
repos:
- repo: git@github.com:Yelp/detect-secrets
rev: v1.2.0
rev: v1.5.0
hooks:
- id: detect-secrets
args: ['--baseline', '.secrets.baseline']
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.4.0
rev: v6.0.0
hooks:
- id: end-of-file-fixer
- id: no-commit-to-branch
args: [--branch, develop, --branch, master, --pattern, release/.*]
- repo: https://github.com/psf/black
rev: 22.3.0
rev: 26.5.1
hooks:
- id: black
2 changes: 1 addition & 1 deletion .secrets.baseline

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

250 changes: 132 additions & 118 deletions poetry.lock

Large diffs are not rendered by default.

7 changes: 4 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "authutils"
version = "8.0.0"
version = "9.0.0"
description = "Gen3 auth utility functions"
authors = ["CTDS UChicago <cdis@uchicago.edu>"]
license = "Apache-2.0"
Expand All @@ -15,13 +15,14 @@ werkzeug = ">=3.1.5"
xmltodict = "~=0.9"

authlib = ">=1.6.6"
httpx = ">=0.23.0,<1.0.0"
pyjwt = {version = ">=2.4.0,<3.0", extras = ["crypto"]}
httpx2 = ">=2.9.1"
pyjwt = {version = ">=2.11.0,<3.0", extras = ["crypto"]}
cryptography = ">=48.0.1"

Flask = {version = "*", optional = true}
fastapi = {version = "*", optional = true}
datamodelutils = { version = "*", optional = true }
joserfc = ">=1.7.3"

[tool.poetry.extras]
flask = ["Flask"]
Expand Down
10 changes: 5 additions & 5 deletions src/authutils/dbgap.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Defines functionality to check case existence in dbGaP.
"""

import httpx
import httpx2
import re

import xmltodict
Expand Down Expand Up @@ -32,14 +32,14 @@ class dbGaPXReferencer(object):
"GetSampleStatus.cgi?study_id={phsid}&rettype=xml"
)

def __init__(self, db, logger=None, proxies={}):
def __init__(self, db, logger=None, proxy=None):
"""Instantiate a class to crossvalidate entity existence in dbGaP."""
self._cached_telemetry_xmls = {
# "phsid": "telemetry xml"
}

self.db = db
self.proxies = proxies
self.proxy = proxy
self.logger = logger or get_logger("dbGapXReferencer", log_level="info")
self.logger.info("Creating new dbGaP Cross Referencer")

Expand Down Expand Up @@ -96,7 +96,7 @@ def get_xml(self, phsid):
self.logger.info("Pulling telemetry report from {0}".format(url))

# Request the XML
with httpx.Client(proxies=self.proxies) as client:
with httpx2.Client(proxy=self.proxy) as client:
r = client.get(url)
if r.status_code != 200:
msg = (
Expand Down Expand Up @@ -217,7 +217,7 @@ def assert_project_exists(self, project_code, phsid):
self.logger.info("Pulling telemetry report from {0}".format(url))

# Request the XML
with httpx.Client(proxies=self.proxies) as client:
with httpx2.Client(proxy=self.proxy) as client:
r = client.get(url)
if r.status_code == 400:
msg = "Project appears not to exist in dbGaP."
Expand Down
Loading