Skip to main content

oidcauthlib

OIDC userinfo scopes (OidcUserInfoManager)

Some providers (e.g. Okta employee access tokens) only carry openid profile email groups in the JWT; the scopes that authorize a caller appear only on the OIDC userinfo response. oidcauthlib.auth.userinfo.oidc_userinfo_manager.OidcUserInfoManager resolves a token's effective scopes from the token's own claims plus the userinfo endpoint, and caches the userinfo-derived scopes in a key-value store.

manager = OidcUserInfoManager(
    auth_config_reader=auth_config_reader,
    well_known_configuration_manager=well_known_configuration_manager,
    store=store,                      # py-key-value-aio store; yours, not shared with other services
    cache_collection="oidc-user-info-cache",
    cache_ttl_seconds=86400,
    fetch_timeout_seconds=30,
    scope_claims=["custom:scope"],    # optional extra claims holding scopes
    group_claims=["groups"],          # optional claims holding group names, used whole as scopes
    scope_remove_prefixes=["fhir/prod/"],
)
scopes = await manager.get_scopes_from_user_info_async(access_token=token)
  • Scope derivation follows fhir-server-ui's jwtParser: the scope claim (plus scp), then scope_claims, then group_claims (each value taken whole). Commas separate like spaces, results are de-duplicated, and scope_remove_prefixes are stripped (first match wins). Nothing beyond scope/scp is read unless configured.
  • Provider is matched to the token's iss (exact issuer, then well_known_uri equal to or beneath the issuer at a path boundary), then its client id. A token matching no provider raises ValueError; it is never sent to another provider.
  • Cache key is oidc-userinfo-scopes:<issuer>:<client_id>:<sub>|v1 with each segment percent-encoded (so values containing : cannot collide, and two providers never share an entry); only the userinfo-derived scopes are stored, never the userinfo response. The token's own scopes are re-derived on every call. A token without sub, or an empty scope list, is not cached. Changes to a user's entitlements are visible after at most cache_ttl_seconds.
  • Failures: a cache write failure is logged and swallowed. A cache read failure, malformed cache entry, userinfo HTTP error or missing provider is raised, so each service decides whether to fail closed or degrade.

Metadata

Release files for oidcauthlib 3.0.22

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oidcauthlib 3.0.22
File Size Uploaded
oidcauthlib-3.0.22.tar.gz 82.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for oidcauthlib 3.0.22
File Interpreter ABI Platform
oidcauthlib-3.0.22-py3-none-any.whl Python 3 none any Details

Total release size: 192.0 kB

Release files / oidcauthlib-3.0.22.tar.gz

Download URL oidcauthlib-3.0.22.tar.gz
Size 82.1 kB
Tags Source
SHA-256 checksum
How to use checksums
161fd8dbb6f295355466e72cb7e13398653a710ce78730fa3d5f16b669c25151
BLAKE2b-256 checksum
How to use checksums
e5dd99e5bf483e7173d832a6da533fb6de9f7ebf5ced34c019b57ab689c501a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / oidcauthlib-3.0.22-py3-none-any.whl

Download URL oidcauthlib-3.0.22-py3-none-any.whl
Size 109.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c95dcf22e372196d7de4bd0cc479d053a2077168a1de30b08571954db02be766
BLAKE2b-256 checksum
How to use checksums
06c424f8451db7646c5e3141e7d5c835e0768c93f0395fa95d4fc1587be438a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release history Release notifications | RSS feed

3.0.26

2 release files

3.0.25

2 release files

3.0.24

2 release files

3.0.23

2 release files

This release

3.0.22 This release

2 release files

3.0.21

2 release files

3.0.20

2 release files

3.0.19

2 release files

3.0.18

2 release files

3.0.17

2 release files

3.0.14

2 release files

3.0.13

2 release files

3.0.12

2 release files

3.0.11

2 release files

3.0.10

2 release files

3.0.9

2 release files

3.0.8

2 release files

3.0.7

2 release files

3.0.6

2 release files

3.0.5

2 release files

3.0.4

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.0.18

2 release files

2.0.17

2 release files

2.0.16

2 release files

2.0.15

2 release files

2.0.14

2 release files

2.0.13

2 release files

2.0.12

2 release files

2.0.11

2 release files

2.0.10

2 release files

2.0.9

2 release files

2.0.8

2 release files

2.0.7

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.0.25

2 release files

1.0.24

2 release files

1.0.23

2 release files

1.0.22

2 release files

1.0.21

2 release files

1.0.20

2 release files

1.0.19

2 release files

1.0.18

2 release files

1.0.17

2 release files

1.0.16

2 release files

1.0.15

2 release files

1.0.14

2 release files

1.0.13

2 release files

1.0.12

2 release files

1.0.11

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page