Skip to main content

Simple and opinionated OpenID-Connect relying party and resource server implementation

Project description

Simple OpenID

Simple and opinionated OpenID-Connect relying party and resource server implementation

Development philosophy

  • Keep the API as simple as possible

    No **kwargs parameters, no function arguments called request_args, http_args or something_else_args

  • Fully typed API

    Python has type hints now, let's use them.

  • Support commonly used OpenID features and flows

    Commonly used flows will be supported but obscure and legacy or experimental mechanisms not so much.

  • Be just an OpenID library

    Tell the user about function requirements clearly but don't try any fancy internal persistence or caching mechanisms that will only fail in different usage scenarios. Instead, abstract the underlying OpenID protocol into usable, clear functions but nothing more.

Supported OpenID Specs

The list of OpenID specifications can be found on the official website.

  • (✔️) Partial OpenID Connect Core 1.0

    Only the following flows and features are implemented:

    • ✔️ Authorization Code Flow
    • ✔️ client_secret_basic client authentication
    • ✔️ none client authentication
    • ✔️ Query String serialization and parsing
    • ❌ Implicit Flow
    • ❌ Hybrid Flow
    • ❌ Handling third party initiated login
    • ❌ Retrieving userinfo
    • ❌ Passing requests as JWTs (neither by value nor by reference)
    • ❌ Self-Issued OpenID Provider
    • client_secret_post client authentication
    • client_secret_jwt client authentication
    • private_key_jwt client authentication
    • ✔ ID Token handling (parsing + validation)
    • ❌ Extensive response validation (signatures, validating responses with external expected conditions)
    • ✔ Using refresh tokens
  • (✔️) Partial OpenID Connect Discovery 1.0. Provider Configuration Discovery is implemented, Provider Issuer Discovery is not.

    This means that a known issuer can be introspected for its supported algorithms, endpoint locations and so forth but discovering that issuer in the first hand is not possible.

  • ✔️ Full OAuth 2.0 Multiple Response Type Encoding Practices

    Only the following features are implemented and supported:

    • ✔️ Response modes (fragment based response parsing)
    • ✔️ Multiple-Valued Response Types
      No explicit support, but it is possible to supply one of the multivalued response_type values to an authentication request and then parse multiple responses from the resulting response.
  • ✔️ Full OpenID Connect RP-Initiated Logout 1.0

  • ✔️ Full OpenID Connect Front-Channel Logout 1.0

  • ✔️ Full OpenID Connect Back-Channel Logout 1.0

  • ✔️ Full OAuth 2.0 Token Introspection

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simple_openid_connect-0.0.1.tar.gz (33.6 kB view details)

Uploaded Source

Built Distribution

simple_openid_connect-0.0.1-py3-none-any.whl (29.5 kB view details)

Uploaded Python 3

File details

Details for the file simple_openid_connect-0.0.1.tar.gz.

File metadata

File hashes

Hashes for simple_openid_connect-0.0.1.tar.gz
Algorithm Hash digest
SHA256 964e5afad8bcc52f38a75d89022da1dbb3aec20d7128f1704c5c19425a716710
MD5 e6bb960f66a30764eb063299a15bbd7a
BLAKE2b-256 c640524b3a56d1d6274a0385abe7ec2789c043c9932ba49a8b42d62e7273bfe2

See more details on using hashes here.

File details

Details for the file simple_openid_connect-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for simple_openid_connect-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8bb8370c09b22b5ca535cc8fd3312f38f48e9f1c976ba56bb39df7c26974607e
MD5 dd8bdec652d5fff3b796916883558023
BLAKE2b-256 a22a3d2a3c951442fee1ebf5080f3f5bf209a5fc0b461162eca3077c0b6f3895

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page