Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean up role-based auth #2255

Merged
merged 82 commits into from
Mar 7, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
6a26396
tidy bsky auth
dholms Feb 29, 2024
125f721
hook up new auth verifier
dholms Feb 29, 2024
36da1d9
update auth throughout ozone
dholms Feb 29, 2024
32b3de8
handle mod signing keys
dholms Feb 29, 2024
b1f07d5
add client proxy heads to pds
dholms Feb 29, 2024
ef236a4
hook up rest of routes
dholms Feb 29, 2024
bfbb586
simplify pipethrough & add some SSRF protection
dholms Feb 29, 2024
92d9268
tests
dholms Feb 29, 2024
199b754
fix bad var
dholms Feb 29, 2024
d1d39ff
merge main
dholms Feb 29, 2024
5cea30c
remove basic auth in ozone
dholms Feb 29, 2024
7561b93
wip
dholms Feb 29, 2024
cb53fdc
fix key parsing in pds
dholms Feb 29, 2024
f8145ec
Merge branch 'ozone-acls-take2' into rm-basic-auth
dholms Feb 29, 2024
26b3557
fix up all ozone tests
dholms Mar 1, 2024
e3bfb17
fix admin auth test
dholms Mar 1, 2024
a642063
rename test
dholms Mar 1, 2024
e2c0949
Merge branch 'ozone-acls-take2' into rm-basic-auth
dholms Mar 1, 2024
bac2b57
fix ozone test
dholms Mar 1, 2024
d599dd7
clean up tokens in pds
dholms Mar 1, 2024
08dc9a9
fix up pds tests
dholms Mar 1, 2024
8747869
fix up ozone tests
dholms Mar 1, 2024
88c2412
add pipethrough to write routes
dholms Mar 1, 2024
a30ac47
Merge branch 'ozone-acls-take2' into pds-proxy-headers
dholms Mar 1, 2024
648cf62
merge
dholms Mar 1, 2024
a52f7b6
reenable proxied admin test
dholms Mar 1, 2024
9b322c7
add moderator accounts to ozone in dev-env
dholms Mar 4, 2024
f7ef546
update did doc id values
dholms Mar 4, 2024
dbe9aff
Merge branch 'ozone-acls-take2' into pds-proxy-headers
dholms Mar 4, 2024
6eb72bf
Merge branch 'pds-proxy-headers' into rm-basic-auth
dholms Mar 4, 2024
0482a92
null creds string -> `none`
dholms Mar 4, 2024
cccade6
Merge branch 'ozone-acls-take2' into pds-proxy-headers
dholms Mar 4, 2024
8a38742
Merge branch 'pds-proxy-headers' into rm-basic-auth
dholms Mar 4, 2024
5df31de
fix fetchLabels auth check
dholms Mar 5, 2024
04dc443
Merge branch 'ozone-acls-take2' into pds-proxy-headers
dholms Mar 5, 2024
9e290ca
Merge branch 'pds-proxy-headers' into rm-basic-auth
dholms Mar 5, 2024
dd891d4
:sparkles: Add a couple more proxied requests that we use in ozone ui
foysalit Mar 5, 2024
2ca4fee
Add runit to the services/bsky Dockerfile (#2254)
Jacob2161 Feb 29, 2024
6ba5f6c
Improve tag detection (#2260)
estrattonbailey Mar 1, 2024
9b2500e
Version packages (#2261)
github-actions[bot] Mar 1, 2024
c76fd03
:bug: Increment attempt count after each attempt to push ozone event …
foysalit Mar 4, 2024
87f00f2
Ozone delegates email sending to actor's pds (#2272)
devinivy Mar 5, 2024
ccfc4d9
Merge branch 'ozone-acls-take2' into pds-proxy-headers
dholms Mar 5, 2024
1b1d1a4
merge
dholms Mar 5, 2024
c273f46
add dev dep for nodemailer in ozone
dholms Mar 5, 2024
8341c7a
fix auth verifier method
dholms Mar 5, 2024
207e208
Merge branch 'ozone-acls-take2' into pds-proxy-headers
dholms Mar 5, 2024
9ddf283
merge
dholms Mar 5, 2024
f936105
build branch
dholms Mar 5, 2024
d7682f9
Merge branch 'pds-proxy-headers' into rm-basic-auth
dholms Mar 5, 2024
971b4b7
build branch
dholms Mar 5, 2024
11b7af2
merge main
dholms Mar 5, 2024
abe4b03
Merge branch 'ozone-acls-take2' into pds-proxy-headers
dholms Mar 5, 2024
3a9661f
Merge branch 'pds-proxy-headers' into rm-basic-auth
dholms Mar 5, 2024
5f3c91b
fix url check
dholms Mar 5, 2024
037f163
better error handling for get account infos
dholms Mar 5, 2024
fc1c40d
fix labeler service id
dholms Mar 5, 2024
483b71f
Merge branch 'ozone-acls-take2' into pds-proxy-headers
dholms Mar 5, 2024
5e1c5fd
fix iss on auth headers
dholms Mar 5, 2024
64d99dd
Merge branch 'ozone-acls-take2' into pds-proxy-headers
dholms Mar 5, 2024
82acea2
fix dev-env ozone did
dholms Mar 5, 2024
4c7db5c
fix tests & another jwt issuer
dholms Mar 5, 2024
514b437
Merge branch 'ozone-acls-take2' into pds-proxy-headers
dholms Mar 5, 2024
d697105
merge
dholms Mar 5, 2024
9d5d762
fix proxy auth
dholms Mar 5, 2024
81f9d69
ozone: fix ip check
devinivy Mar 5, 2024
c74fd23
Merge remote-tracking branch 'origin/ozone-acls-take2' into pds-proxy…
devinivy Mar 5, 2024
7be8445
fix aud check on pds mod service auth
dholms Mar 5, 2024
7a490d2
Merge branch 'ozone-acls-take2' into pds-proxy-headers
dholms Mar 5, 2024
592518c
tidy
dholms Mar 5, 2024
402cc7b
Merge branch 'ozone-acls-take2' into pds-proxy-headers
dholms Mar 5, 2024
5b6b9ee
Merge branch 'main' into pds-proxy-headers
dholms Mar 6, 2024
f583ba9
Merge branch 'pds-proxy-headers' into rm-basic-auth
dholms Mar 6, 2024
1ce9e00
Update packages/pds/tests/proxied/admin.test.ts
dholms Mar 6, 2024
5aec85f
merge main
dholms Mar 7, 2024
c5c7a4c
Merge branch 'pds-proxy-headers' into rm-basic-auth
dholms Mar 7, 2024
b4211ea
fix pipethrough of headers
dholms Mar 7, 2024
0ab7500
Merge branch 'pds-proxy-headers' into rm-basic-auth
dholms Mar 7, 2024
e46397d
fix moderation status tests
dholms Mar 7, 2024
d9b62b9
fix auth on ozone routes
dholms Mar 7, 2024
4d2c17f
update iss on daemon
dholms Mar 7, 2024
accb2a6
merge main
dholms Mar 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/pds/src/api/app/bsky/feed/getFeed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export default function (server: Server, ctx: AppContext) {
const { data: feed } =
await appViewAgent.api.app.bsky.feed.getFeedGenerator(
{ feed: params.feed },
await ctx.appviewAuthHeaders(requester, req),
await ctx.appviewAuthHeaders(requester),
)
return pipethrough(ctx, req, requester, feed.view.did)
},
Expand Down
2 changes: 1 addition & 1 deletion packages/pds/src/api/app/bsky/feed/getPostThread.ts
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ const readAfterWriteNotFound = async (
assert(ctx.appViewAgent)
const parentsRes = await ctx.appViewAgent.api.app.bsky.feed.getPostThread(
{ uri: highestParent, parentHeight: params.parentHeight, depth: 0 },
await ctx.appviewAuthHeaders(requester, null),
await ctx.appviewAuthHeaders(requester),
)
thread.parent = parentsRes.data.thread
} catch (err) {
Expand Down
14 changes: 3 additions & 11 deletions packages/pds/src/api/app/bsky/labeler/getServices.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,13 @@
import { Server } from '../../../../lexicon'
import AppContext from '../../../../context'
import { pipethrough } from '../../../../pipethrough'

export default function (server: Server, ctx: AppContext) {
const { appViewAgent } = ctx
if (!appViewAgent) return
server.app.bsky.labeler.getServices({
auth: ctx.authVerifier.access,
handler: async ({ params, auth, req }) => {
handler: async ({ auth, req }) => {
const requester = auth.credentials.did
const res = await appViewAgent.api.app.bsky.labeler.getServices(
params,
await ctx.appviewAuthHeaders(requester, req),
)
return {
encoding: 'application/json',
body: res.data,
}
return pipethrough(ctx, req, requester)
},
})
}
4 changes: 2 additions & 2 deletions packages/pds/src/api/app/bsky/notification/registerPush.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ export default function (server: Server, ctx: AppContext) {
if (!appViewAgent) return
server.app.bsky.notification.registerPush({
auth: ctx.authVerifier.accessDeactived,
handler: async ({ auth, input, req }) => {
handler: async ({ auth, input }) => {
const { serviceDid } = input.body
const {
credentials: { did },
} = auth

const authHeaders = await ctx.serviceAuthHeaders(did, serviceDid, req)
const authHeaders = await ctx.serviceAuthHeaders(did, serviceDid)

if (ctx.cfg.bskyAppView?.did === serviceDid) {
await appViewAgent.api.app.bsky.notification.registerPush(input.body, {
Expand Down
1 change: 0 additions & 1 deletion packages/pds/src/api/com/atproto/admin/sendEmail.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ export default function (server: Server, ctx: AppContext) {
...(await ctx.serviceAuthHeaders(
recipientDid,
ctx.cfg.entryway?.did,
req,
)),
}),
)
Expand Down
28 changes: 4 additions & 24 deletions packages/pds/src/context.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import assert from 'node:assert'
import express from 'express'
import * as nodemailer from 'nodemailer'
import { Redis } from 'ioredis'
import * as plc from '@did-plc/lib'
Expand Down Expand Up @@ -249,37 +248,18 @@ export class AppContext {
})
}

async appviewAuthHeaders(did: string, req: express.Request | null) {
async appviewAuthHeaders(did: string) {
assert(this.cfg.bskyAppView)
return this.serviceAuthHeaders(did, this.cfg.bskyAppView.did, req)
return this.serviceAuthHeaders(did, this.cfg.bskyAppView.did)
}

async moderationAuthHeaders(did: string) {
assert(this.cfg.modService)
return this.serviceAuthHeaders(did, this.cfg.modService.did, null)
}

async reportingAuthHeaders(did: string) {
assert(this.cfg.reportService)
return this.serviceAuthHeaders(did, this.cfg.reportService.did, null)
}

async serviceAuthHeaders(
did: string,
aud: string,
req: express.Request | null,
) {
async serviceAuthHeaders(did: string, aud: string) {
const keypair = await this.actorStore.keypair(did)
const authHeaders = await createServiceAuthHeaders({
return createServiceAuthHeaders({
iss: did,
aud,
keypair,
})
const labelerHeader = req?.header('atproto-labelers')
if (labelerHeader) {
authHeaders.headers['atproto-labelers'] = labelerHeader
}
return authHeaders
}
}

Expand Down
1 change: 1 addition & 0 deletions packages/pds/src/pipethrough.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ export const createUrlAndHeaders = async (
// forward accept-language header to upstream services
headers['accept-language'] = req.headers['accept-language']
headers['content-type'] = req.headers['content-type']
headers['atproto-labelers'] = req.headers['atproto-labelers']
return { url, headers }
}

Expand Down
Loading