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

Namespace the credential subject by verified issuer

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

Nobody has claimed this yet.

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

Description

Phase 3 — Roles and the proxy.

Today
The minted credential records who the caller is but not who vouched for them, so every issuer's subjects share one flat namespace. That subject is also part of the proxy's cache key, so a collision affects cached authorization results too.

Do
Rewrite the principal into an issuer-qualified form before it reaches the Source API, derived from the verified iss claim.

Done when
Two issuers using the same subject string resolve to different accounts and do not share a cache entry.

Watch
Derive the namespace from the verified claim, not from Role config — one Role may trust several issuers, which would collapse them back into one namespace.

Why it blocks GitHub
GitHub counts as a second issuer. This must land before GitHub is trusted, not only before user-registered issuers.

Depends on source-cooperative/source.coop#543.


Part of source-cooperative/source.coop#491.

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

Start by tracing how the verified iss claim and subject reach the Source API and how the proxy builds its cache key; review source-cooperative/source.coop#543 first. Done means two issuers with the same subject resolve to different accounts and never share a cache entry, including the GitHub issuer path.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
authentication, authorization, backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.