Skip to main content

Apple OAuth 2.0 / OAuth 2.1 / OIDC 1.0 identity provider implementations for Swarmauri

Project description

Swarmauri Logo

PyPI - Downloads Hits PyPI - Python Version PyPI - License PyPI - swarmauri_auth_idp_apple


Swarmauri Auth IDP Apple

Apple Sign-In OAuth 2.0, OAuth 2.1, and OIDC 1.0 flows packaged for the Swarmauri ecosystem.

Features

  • PKCE-enabled authorization code flows with signed state payloads to prevent tampering.
  • Automatic OpenID Connect discovery and JWKS verification for ID token integrity.
  • Reusable async HTTP client with retry and jitter to tolerate transient Apple API issues.
  • Typed, ComponentBase-derived classes that register with Swarmauri plugin discovery.
  • Explicit app-client stubs that document unsupported Apple client credentials grants.

Installation

pip

pip install swarmauri_auth_idp_apple

uv (project)

uv add swarmauri_auth_idp_apple

uv (environment)

uv pip install swarmauri_auth_idp_apple

Usage

The login classes expose the same asynchronous interface as the core IOAuth*Login contracts. Instantiate them with your Apple developer credentials, persist the state returned by auth_url, and provide it back during the exchange step.

from pydantic import SecretBytes
from swarmauri_auth_idp_apple import AppleOAuth21Login

login = AppleOAuth21Login(
    team_id="ABCD123456",
    key_id="XYZ7890",
    client_id="com.example.web",
    private_key_pem=SecretBytes(b"""-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"""),
    redirect_uri="https://example.com/callback",
    state_secret=SecretBytes(b"super-secret-state-key"),
)

# In your application, call `await login.auth_url()` to initiate the flow and
# `await login.exchange_and_identity(...)` inside an async context.
print(login.client_id)

Expected Workflow

  1. Call auth_url() and redirect the user-agent to the returned URL.
  2. Persist the state for later validation (cookie, session, encrypted store, etc.).
  3. On the redirect back to your service, validate the returned state and code by calling exchange_and_identity() (or exchange() for the OIDC login).
  4. Consume the normalized identity payload to provision sessions or tokens.

The package includes app-client classes which raise NotImplementedError to highlight that Apple does not support generic client credential grants for Sign in with Apple.

Entry Points

The distribution registers the following entry points:

  • swarmauri.auth_idp:AppleOAuth20Login
  • swarmauri.auth_idp:AppleOAuth21Login
  • swarmauri.auth_idp:AppleOIDC10Login
  • swarmauri.auth_idp:AppleOAuth20AppClient
  • swarmauri.auth_idp:AppleOAuth21AppClient
  • swarmauri.auth_idp:AppleOIDC10AppClient

Contributing

To contribute to swarmauri-sdk, review the guidelines for contributing which cover development workflow, testing, and coding standards.

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

swarmauri_auth_idp_apple-0.2.0.dev5.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

swarmauri_auth_idp_apple-0.2.0.dev5-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file swarmauri_auth_idp_apple-0.2.0.dev5.tar.gz.

File metadata

  • Download URL: swarmauri_auth_idp_apple-0.2.0.dev5.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for swarmauri_auth_idp_apple-0.2.0.dev5.tar.gz
Algorithm Hash digest
SHA256 376dbbcb36eb79cc2d3652fb94a922f1ba743c148a1bab86c64c35b1d3857472
MD5 e89c3d5f624ef8508cabbcf9ee2615ce
BLAKE2b-256 fc27e95201603fa370b51fd5ffe0adadee924fd9aef77613eac2d192c3670034

See more details on using hashes here.

File details

Details for the file swarmauri_auth_idp_apple-0.2.0.dev5-py3-none-any.whl.

File metadata

  • Download URL: swarmauri_auth_idp_apple-0.2.0.dev5-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for swarmauri_auth_idp_apple-0.2.0.dev5-py3-none-any.whl
Algorithm Hash digest
SHA256 f78013b07d75d9129adfbd61ca1426e48c8f167050d0b424853bb262f12d4789
MD5 fecef8412dd942a37036ac990f3645b2
BLAKE2b-256 b6f9f7d0e23018f2c714a7f581538630fb89109492f5dceffe7ba549aa1ad417

See more details on using hashes here.

Supported by

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