source-cooperative / source-cooperative/data.source.coop

Support external OIDC Identity Providers

Open
#128 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Rust
Stars
24
Forks
6
Avg merge
1h 32m
Merged PRs (30d)
1

Description

Description

Implement support for platform-registered OIDC Identity Providers in the data proxy as described in ADR-004.

Platform IdPs are pre-configured by Source Cooperative operators. Each defines an issuer URL, well-known claims, and audience hint. Roles reference these IdPs in their identity constraints.

Key Requirements
  • Platform IdP registry with initial providers:
    • Source Cooperative Auth (auth.source.coop) — interactive users, CLI login
    • GitHub Actions (https://token.actions.githubusercontent.com) — CI/CD pipelines
    • GitLab CI/CD (https://gitlab.com)
    • Azure DevOps (https://vstoken.dev.azure.com/<org_id>)
    • HCP Terraform (https://app.terraform.io)
    • Vercel (https://oidc.vercel.com/<team_slug>)
  • Each IdP defines: id, issuer_url, display_name, well_known_claims[], audience_hint
  • JWKS discovery and caching per IdP (1hr TTL, stale-while-revalidate up to 24hr, 256KB max response, 3s timeout)
  • JWT verification: signature (via JWKS), exp, nbf (60s clock skew tolerance), aud
  • Extensible design: operators can add new IdPs without code changes
Future Extension

Account-registered IdPs (allowing accounts to register corporate identity systems like Okta, Entra ID, Keycloak) is deferred but the design should not preclude it.

References

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read ADR-004 first, then locate the data proxy's authentication and role identity-constraint entry points. The work is done when platform IdP registration, per-IdP JWKS discovery and caching, and the specified JWT checks support the listed providers without preventing future account-registered IdPs.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
authentication, backend-api-design, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.