Slack: route OAuth through the privacy relay - #1035
Conversation
| }, | ||
| "oauth_config": { | ||
| "redirect_urls": ["https://codemower.com/api/slack/oauth/callback"], | ||
| "redirect_urls": ["https://codemower-slack-oauth-ingress.jhuber.workers.dev/callback"], |
There was a problem hiding this comment.
⚠️ Security: OAuth redirect now hardcodes a personal workers.dev domain
The hosted manifest's OAuth redirect_urls changes from the org-owned codemower.com to codemower-slack-oauth-ingress.jhuber.workers.dev, a personal Cloudflare Workers subdomain tied to an individual account (jhuber) rather than the codemower.com org. Slack OAuth redirect URLs are security-sensitive: whoever controls that domain/worker can intercept authorization codes for every installed workspace using this manifest. Baking an individual's personal cloud subdomain into a production/hosted contract creates an ownership and continuity risk (account loss, employee departure, DNS takeover) that isn't mitigated anywhere in this diff. Consider proxying through an org-owned domain (e.g. oauth-relay.codemower.com via a CNAME to the worker) so ownership stays with the organization rather than an individual's personal account.
Front the worker with an org-owned custom domain and point the manifest at that instead of the raw workers.dev subdomain.:
"redirect_urls": ["https://slack-oauth-relay.codemower.com/callback"],
Was this helpful? React with 👍 / 👎
|
Note Automatic reviews are paused because your team has used its included automatic processing for this billing period (headroom scales with your seat count). You can still comment "Gitar review" to run one anytime, and automatic reviews resume on their own by October 1. Add seats for more headroom. Code Review
|
| Compact |
|
Was this helpful? React with 👍 / 👎 | Gitar
|
Owner gate override for exact head
Applying the documented owner-only, current-head |
The v1.5.0 candidate's hosted Slack manifest sends the OAuth authorization code directly to the application callback, bypassing the dedicated query-scrubbing relay required by the reviewed hosted contract. An imported app therefore cannot both match the packaged manifest and pass the live privacy gate.
This change makes the relay the sole Slack OAuth redirect while keeping slash commands and interactivity on the application routes. Unit and installed-wheel rehearsal assertions now pin all three endpoints so a replacement candidate cannot repeat the mismatch. The operator guide explains the relay handoff.
Validation:
The existing candidate run is invalid and must not be published. After exact-head review, CI, and the authoritative gate, merge this PR and build one replacement immutable candidate from the merge SHA before resuming #918 and #920.