Commit aa8cfdc
fix(mcp): anchor OAuth state TTL to dedicated stateCreatedAt column
hasActiveFlow and loadOauthRowByState both gated on updatedAt, but
saveTokens bumps updatedAt on every refresh. An abandoned state column
from one user combined with another user's tool calls (which trigger
background token refreshes) could indefinitely extend the state TTL,
producing permanent 409 "OAuth authorization already in progress"
responses and a wider state-replay window.
Add a stateCreatedAt column set only by saveState (and cleared by
clearState). Both TTL checks now anchor to it, so token refreshes no
longer interfere with state expiry.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>1 parent c292149 commit aa8cfdc
6 files changed
Lines changed: 16057 additions & 4 deletions
File tree
- apps/sim
- app/api/mcp/oauth/start
- lib/mcp/oauth
- packages/db
- migrations
- meta
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
79 | | - | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
80 | 83 | | |
81 | 84 | | |
82 | 85 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
| |||
97 | 98 | | |
98 | 99 | | |
99 | 100 | | |
| 101 | + | |
100 | 102 | | |
101 | 103 | | |
102 | 104 | | |
| |||
124 | 126 | | |
125 | 127 | | |
126 | 128 | | |
| 129 | + | |
127 | 130 | | |
128 | 131 | | |
129 | 132 | | |
| |||
152 | 155 | | |
153 | 156 | | |
154 | 157 | | |
155 | | - | |
| 158 | + | |
156 | 159 | | |
157 | 160 | | |
158 | 161 | | |
| |||
188 | 191 | | |
189 | 192 | | |
190 | 193 | | |
| 194 | + | |
191 | 195 | | |
192 | 196 | | |
193 | | - | |
| 197 | + | |
194 | 198 | | |
195 | 199 | | |
196 | 200 | | |
| |||
218 | 222 | | |
219 | 223 | | |
220 | 224 | | |
221 | | - | |
| 225 | + | |
222 | 226 | | |
223 | 227 | | |
224 | 228 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
0 commit comments