pyop is an OpenID Connect Provider (OP) library in Python, enabling applications to act as identity providers. It is actively maintained with a regular release cadence, adding new features, improving compatibility, and addressing bug fixes. The current version is 3.4.2.
pip install pyopVerified import paths — ran on the pinned version, not inferred.
This quickstart demonstrates how to initialize a basic pyop OpenID Connect Provider (OP) server using an in-memory dictionary storage. It sets up essential configuration like the issuer, JWKS URI, supported response types, and client information. For production environments, you would replace `DictStorage` with a persistent storage solution (e.g., `MongoStorage`, `RedisStorage`) and integrate the `Server` instance with your web framework (e.g., Flask, Django) to handle incoming OIDC requests at appropriate endpoints.
Review the v3.0.0 release notes and update any custom scope handling logic to align with the new implementation. Be prepared for changes in how custom scopes are defined and processed.
Ensure that your client applications use S256 (SHA256) as the code challenge method for PKCE, as plaintext (plain) is not supported by pyop.
Upgrade to pyop version 3.4.1 or newer if you are using PyMongo 4. Alternatively, downgrade PyMongo to a compatible version (e.g., PyMongo 3.x) for older pyop versions.
Review the documentation for the stateless code flow in v3.4.0+. If your application implicitly relied on state for certain operations, verify behavior or explicitly configure state management as needed.