oidc-provider: optional `oidc_session_name` backend-option to override RoleSessionName derivation
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- aws, rust
- Ambito
- authentication, backend-api-design, cloud
Direzione di ricerca
Se questa miglioria viene attivata, inizia da AwsBackendAuth::resolve_aws e dalla costruzione di AwsExchange, quindi esamina come backend_options gestisce oidc_role_arn e oidc_subject. Il lavoro è completato quando viene accettato un oidc_session_name facoltativo senza modificare il valore predefinito esistente, continua a essere sanificato ed è coperto dai test pertinenti del repository.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Context
#83 makes AwsBackendAuth::resolve_aws derive the assumed-role RoleSessionName from the per-connection oidc_subject (scv1:conn:{id}), sanitized to AWS's [\w+=,.@-]{2,64} charset, instead of the constant s3-proxy. This gives consumers per-connection attribution in their CloudTrail.
The session name is currently non-overridable through the middleware: AwsBackendAuth builds the AwsExchange internally from backend_options, and while AwsExchange.session_name is a pub field, using it requires bypassing the middleware entirely (reimplementing the credential-resolution path). So a consumer that wants a different session-name format has no practical hook.
Proposed enhancement (deferred)
Read an optional oidc_session_name backend-option, falling back to the derived-from-subject default:
let session = config.option("oidc_session_name")
.map(sts_session_name) // still sanitize — STS rejects bad input either way
.unwrap_or_else(|| sts_session_name(subject));
exchange.session_name = session;
This reuses the existing string-option mechanism (oidc_role_arn, oidc_subject are passed exactly this way), so it's ~2 lines, adds no new public type/trait/closure, and is fully backward-compatible.
Why it is NOT being added now
- One consumer, one policy. The only known consumer is
source-cooperative/data.source.coop(PR #147), and it wants exactly the derived-from-subject behavior. A configuration knob for a value that never varies is speculative generality. - The default is essentially forced, not opinionated. AWS requires a valid
RoleSessionName; "a sanitized rendering of the subject the caller already supplied" is the sane universal default, not one option among several competing strategies anyone has requested. - Waiting costs nothing. Because
backend_optionsis already an open string map,oidc_session_namecan be added the day a second consumer (or a specific CloudTrail naming convention) actually needs a different format — as a non-breaking one-liner, with no redesign. Adding it now would ship an unused knob (YAGNI).
Trigger to revisit
Add the option when any of these becomes real:
- A second consumer of
multistore-oidc-providerneeds a session-name format other than the sanitized subject. - A consumer needs the session name to encode something else (e.g. role name, a fixed prefix, a hash) to satisfy a CloudTrail /
aws:useridconvention or a resource-policyaws:RoleSessionNamecondition. - The sanitization default proves lossy in practice (e.g. truncation collisions that matter for attribution).
Refs: #83
- Lingua principale
- Rust
- Stelle
- 20
- Fork
- 1
- Merge medio
- 2g 3h
- PR unite (30g)
- 11
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di developmentseed/multistore
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
developmentseed/multistore#160 ·
I maintainer di solito rispondono entro 1 giorno
-
List of a prefix 503s when a single object key contains an empty path segment (//)Forse già presa @alukach l’ha presa 90 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
developmentseed/multistore#116 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
developmentseed/multistore#89 ·
I maintainer di solito rispondono entro 1 giorno
-
Credential cache key (role ARN) doesn't capture the full minted identity (subject + extra_claims)Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
developmentseed/multistore#81 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
developmentseed/multistore#70 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di developmentseed/multistore
Issue simili
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
charles-hood/DiagramCraft#73 ·
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 78/100
ontologyportal/sigma-rs#200 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
chipsalliance/caliptra-sw#4311 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
`image_generation`: `max_retries` is ignored for OpenAI-compatible providers (always 2 retries)Forse già presa @ericz7900 l’ha presa oggi. Apertallm translation
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
I maintainer di solito rispondono entro 1 giorno