Repository navigation
row 74 F25: the door path's userinfo Basic is a root-held auth credential; the kernel holds only the binding - #936
Draft
MattJackson wants to merge 1 commit into
Conversation
…of the auth kind; the kernel holds only the binding ARCHITECT ruling on #913 (BUSBAR-1.6.0.md l.650-660, 828-834, 872-873: the kernel never sees the key): the composition root reads a provider URL's or token endpoint's `user:pass@` at configuration time into a root-owned basic credential (root::userinfo::UserinfoBasic, read as reqwest 0.12.28's extract_authority read it, request.rs:169-182 / :581-605, util.rs:4-25) and presents it through the auth kind's outbound call: - member_routes wraps the member's binding (lead_with): every answer is led by `authorization: Basic` unless it names `authorization` (reqwest's replace_headers, util.rs:50-77); the kernel's MemberRoute and far_end carry only the binding's handle (MemberRoute.userinfo and the far_end lead are removed); - a minting plugin's token POST is led by it from the root's own connection table, the endpoint stripped before any plugin settings (v1.5.5 egress_auth/oauth_client_credentials.rs:119-126, jwt_bearer.rs:175-181); the assertion's aud stays the raw token_uri. The kernel UrlUserinfo, its send hook, LaneInput.url_userinfo/token_userinfo, bind_presenting, AuthAxis::serving_presenting and the in-process lane's inserts stay for the legacy lane plane only, each marked TRANSITIONAL (deleted with it, row 155 C). REDs: the root reads userinfo as reqwest did; a binding is led by the Basic value unless it names authorization, on the spot and when submitted; a token POST head likewise; a door member whose base URL spells userinfo has the stripped base on its route and the Basic only through its binding (api-key style: first; bearer: displaced). The door-path oauth/jwt wire tests (stripped dial, Basic-led token POST, raw aud) and the legacy lane's tests are unchanged.
MattJackson
added a commit
that referenced
this pull request
Oct 15, 2026
…onns wrapper follow the merged shapes From the full logs of 2382599: - root door_steps PresentingConns: bind_auth/auth_of take and hand on the registration `member` (the connector's per-member binding, DeclaredConns; E0050/E0061 x2 each). - root tests: the datagram cell's Got states fault/declared_len/end (#893 over #837); the two upgrade-row builds take the settings alone (HostWire build, #932 over #997); the two userinfo cells hand provider_routes a ResolvedProvider (#957 over #876/#936). - tests/plane_blackbox.rs: the step's (key, text) pairs are a type (clippy type_complexity). - config-schema snapshot: `type WakeTicket` is now an alias of ConnWake (#1018), recorded. - Law 0: busbar x instance:export 25 -> 24 (measure); kernel x plane: a test doc names a plane's own webhooks section, not the llm plane's (1050 measured against w2's 1049).
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #922, which is stacked on #913 and #876. This is a DRAFT per queue rule 19 until its bases land.
Why
ARCHITECT ruling (
docs/design/BUSBAR-1.6.0.mdl.650-660, 828-834, 872-873): "the kernel never sees the key". #913 had the kernel build, hold and send theAuthorization: Basicderived from URL userinfo. On the door path, that now moves to the composition root as a credential of the auth kind.What
root::userinfo::UserinfoBasic: a root-owned Basic credential, read at configuration time from a providerbase_url,token_urlor a service account'stoken_uri. It decodes the userinfo the way reqwest 0.12.28 did (request.rs:169-182,extract_authority:581-605,util.rs:4-25).member_routeswraps the member's auth binding (lead_with). Each answer gets the Basic value first unless it already namesauthorization, which is reqwest'sreplace_headerscondition (util.rs:50-77).MemberRouteandfar_endnow carry only the binding handle.MemberRoute.userinfoand thefar_endBasic logic are removed.egress_auth/oauth_client_credentials.rs:119-126andjwt_bearer.rs:175-181. The assertion'saudstays the rawtoken_uri.TRANSITIONAL: deleted with the legacy lane plane (row 155 C); inside busbar-llm the marker readsdeleted with busbar-llm (row 155 C).UrlUserinfoand its send hook;LaneInput.url_userinfoandLaneInput.token_userinfo;bind_presenting;AuthAxis::serving_presenting;REDs
crates/busbar/src/root/tests/userinfo.rs:authorization, both answered on the spot and when submitted;crates/busbar/src/root/tests/door_steps.rs,a_members_base_url_userinfo_reaches_its_attempts_only_through_its_binding: a door member whose base URL contains userinfo has the stripped base on its route. The Basic value reaches it only through the binding, first for theapi-keystyle and displaced forbearer.aud) and the legacy lane's tests.