Repository navigation
Commit ba3f09b
Register site clients through a platform-owner endpoint
The SQL script from 83faba6 needed ORBIT_SITE_TOKEN_PEPPER_V1 to compute
the secret digest, and that pepper is a Worker secret -- write-only, not
readable back. Getting it out would have meant rotating it, and rotation
invalidates every registered client secret, including the one anime's
sign-in depends on. There is no dual-read path in the code: the pepper is
read from a single fixed binding and hash_version, though present on the
table, is never branched on. So rotation today is a hard cutover.
None of that is necessary. The problem was never needing the pepper, only
needing a digest computed with it, and Orbit can compute that itself. The
endpoint is guarded by requirePlatformOwner, which production grants to
exactly one account. The pepper never leaves the Worker.
0041's decision stands: registration is still deliberate and operator-
driven, not self-service. What changes is that it is now repeatable, and
recorded.
Validation and the digest moved into a module both the endpoint and the
script import, so the two paths cannot drift into disagreeing about what
a valid declaration is. The script stays for local development, where
there is no running Orbit and no platform-owner session to authenticate
with; it now runs under tsx because plain node will not resolve the
extensionless TS imports.
The decisive test posts a bogus code to /v1/oauth/token using the newly
registered credentials and asserts invalid_grant, not invalid_client:
client authentication passed, so the digest matches what verification
expects. A control group with a wrong secret gets invalid_client, and a
third case shows the first secret still works after a duplicate
registration is refused with 409 -- silently overwriting would have
knocked an existing site offline with no trace of why.
Also found while writing them: Orbit checks the Origin header on top of
the CSRF token, so a request without one is refused with origin_forbidden.
24 registration cases pass, the core suite is 228 green, astro check
reports 0 errors -- verified that check actually covers these files by
introducing a deliberate type error and watching it fail.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 83faba6 commit ba3f09b
8 files changed
Lines changed: 624 additions & 115 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
40 | | - | |
| 39 | + | |
| 40 | + | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
48 | 49 | | |
49 | 50 | | |
50 | 51 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
13 | 14 | | |
14 | | - | |
| 15 | + | |
15 | 16 | | |
16 | | - | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
68 | | - | |
| 68 | + | |
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
75 | | - | |
| 75 | + | |
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
82 | | - | |
| 82 | + | |
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| |||
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
99 | | - | |
| 99 | + | |
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
14 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
15 | 20 | | |
16 | 21 | | |
17 | 22 | | |
18 | 23 | | |
19 | 24 | | |
20 | | - | |
| 25 | + | |
21 | 26 | | |
22 | | - | |
| 27 | + | |
23 | 28 | | |
24 | 29 | | |
25 | 30 | | |
| |||
34 | 39 | | |
35 | 40 | | |
36 | 41 | | |
37 | | - | |
38 | | - | |
39 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
40 | 50 | | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
| 51 | + | |
| 52 | + | |
51 | 53 | | |
52 | 54 | | |
53 | 55 | | |
54 | 56 | | |
55 | 57 | | |
56 | 58 | | |
57 | 59 | | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | 60 | | |
79 | 61 | | |
80 | 62 | | |
81 | 63 | | |
82 | 64 | | |
83 | 65 | | |
84 | 66 | | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
138 | | - | |
139 | | - | |
140 | | - | |
141 | | - | |
142 | | - | |
143 | | - | |
144 | | - | |
145 | | - | |
146 | | - | |
147 | 67 | | |
148 | 68 | | |
149 | 69 | | |
| |||
188 | 108 | | |
189 | 109 | | |
190 | 110 | | |
191 | | - | |
192 | | - | |
| 111 | + | |
| 112 | + | |
193 | 113 | | |
194 | 114 | | |
195 | 115 | | |
196 | | - | |
| 116 | + | |
197 | 117 | | |
198 | 118 | | |
199 | 119 | | |
| |||
0 commit comments