source-cooperative / source-cooperative/data.source.coop
Namespace the credential subject by verified issuer
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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