23 Commits

Author SHA1 Message Date
Matthieu Sieben
a8d6c11235
🚧 OAuth2 - Authorization Server (#2482)
* chore(deps): update zod

* chore(deps): update pino to match entryway version

* chore(tsconfig): remove truncation of types through noErrorTruncation

* add support for DPoP token type when logging

* fix(bsky): JSON.parse does not return value of type JSON

* fix(pds): add res property to ReqCtx

* fix(pds): properly type getPreferences return value

* chore(tsconfig): disable noFallthroughCasesInSwitch

* refactor(pds): move tracer config in own file

* feat(dev-env): start with "pnpm dev"

* feat(oauth): add oauth provider & client libs

* feat(pds): add oauth provider

* chore: changeset

* feat: various fixes and improvements

* chore(deps): update better-sqlite3 to version 10.0.0 for node 22 compatibility

* chore(deps): drop unused tslib

* fix(did): normalize service IDs before looking for duplicates

* fix(did): avoid minor type casting

* fix(did): improve argument validation

* fix(fetch): explicit use of negation around number comparison

* fix(oauth-provider): improve argument validation

* feat(did): add ATPROTO specific "isAtprotoDidWeb" method

* feat(rollup-plugin-bundle-manifest): add readme

* feat(lint): add eqeqeq rule (only allow == and != with null)

* fix(oauth-client-browser): typo in gitignore

* fix(oauth-provider): properly name error class file

* fix(oauth-provider): remove un-necessary useMemo

* fix(did-resolver): properly build did:web document url

* fix(did-resolver): remove unused types

* fix(fetch): remove unused utils

* fix(pds): remove unused script and dependency

* fix(oauth-provider): simplify isSubPath util

* fix(oauth-provider): add InvalidRedirectUriError static constructor

* fix(jwk): improve JWT validation to provide better error messages and distinguish between signed and unsigned tokens

* fix(pds): use "debug" log level for fetch method

* fix(pds): allow access tokens to contain an unknown "typ" claim (with the exception of "dpop+jwt")

* fix(jwk): remove un-necessary code

* fix(pds): account for whitespace chars when checking JSON

* fix(pds): remove oauth specific config

* fix(pds): run all write queries through transaction or executeWithRetry
fix(pds): remove outdated comments
fix(pds): rename used_refresh_token columns & added primary key
fix(pds): run cleanup task through backgroundQueue
fix(pds): add device.id foreign key to device_account
fix(pds): add comment on cleanup of used_refresh_token
fix(pds): add primary key on device_account

* fix(oauth-provider:time): simplify constantTime util

* fix(pds): rename disableSsrf into disableSsrfProtection

* fix(oauth-client-react-native): remove incomplete package

* refactor(pds): remove status & active from ActorAccount

* fix(pds): invalidate all oauth tokens on takedown

* fix(oauth-provider): enforce token expiry

* fix(pds): properly support deactivated accounts

* perf(pds:db): allow transaction function to be sync

* refactor(psq:account-manager): expose only query builders & data transformations utils from helpers

* fix(oauth-provider): imports from self

* fix(ci): add nested packages to build artifacts

* style(fetch): rename TODO into @TODO

* style(rollup-plugin-bundle-manifest): remove "TODO" from comment

* style(oauth-client): rename TODO into @TODO

* style(oauth-provider): rename TODO into @TODO

* refactor(oauth-client): remove "OAuth" prefix from types

* fix(oauth-client-browser): better type SessionListener

* style(oauth): rename TODO into @TODO

* fix(oauth-provider): enforce provider max session age

* fix(oauth-provider): check authentication parameters against all client metadata

* fix(api): tests

* fix(pds): remove .js from imports for tests

* fix(pds): change account status to match tests

* chore(deps): make all packages depend on the same zod version

* fix(common-web): remove un-necessary binding of Checkable to "zod"

* refactor(jwk): infer jwt schema from refinement definition

* fix(handle-resolver): allow resolution errors to propagate
docs(handle-resolver): better handling of DNS resolution errors
fix(handle-resolver): properly handle DOH responses

* fix(did): service endpoint arrays must contain "one or more" element

* refactor(pipe): simplify implementation

* fix(pds): add missing DB indexes

* feat(oauth): Resolve Authorization Server URI through Protected Resource Metadata

* style:(oauth-client): import order

* docs(oauth-provider:redirect-uri): add reference url

* feat(oauth): implement "OAuth Client ID Metadata Document" from draft-parecki-oauth-client-id-metadata-document-latest internet draft

* feat(oauth-client): backport changes from feat-oauth-client

* docs(simple-store): improve comments

* feat(lexicons): add iterable capabilities

* fix(pds): type error in dev mode

* feat(oauth-provider): improved error reporting

* fix(oauth-types): allow insecure issuer during tests

* fix(xrpc-server): allow upload of empty files

* fix: lint

* feat(fetch): keep request reference in errors
feat(fetch): utilities improvements

* fix(pds): allow more than one session token per user

* feat(ozone): improve env validation error messages

* fix(oauth-client): account for DPoP when checking for invalid_token errors

* fixup! feat(fetch): keep request reference in errors feat(fetch): utilities improvements

* fixup! feat(fetch): keep request reference in errors feat(fetch): utilities improvements

* fix(oauth): various validation fixes
feat(oauth): share client_id validation and parsing utilities between client & provider

* feat(dev-env): fix ozone port number

* fix(fetch-node): prevent fetch against invalid domain names

* fix(oauth-provider): add typings for psl dep

* feat(jwk): make type def compatible with TS 4.x

* fix(oauth): fixed various spec compliance
fix(oauth): return "sub" in refresh token response
fix(oauth): limit token validity for third party clients
fix(oauth): hide client image when not trusted

* fix(oauth): lint

* pds: switch changeset to patch, no breaking changes

* changeset and config for new oauth deps

---------

Co-authored-by: Devin Ivy <devinivy@gmail.com>
2024-06-18 15:11:37 -04:00
bnewbold
af9f11fbde
'bsky' (appview) dev helpers (#888)
* remove commited .env files; exclude in gitignore

* bsky: distinct postgresql database in dev mode

* github CI: build and upload 'bsky' container to GHCR

This isn't how we deploy, but is useful for public access and things
like integration tests.

* Makefile: run-dev-appview
2023-04-24 16:27:34 -07:00
bryan newbold
08a316b46e gitignore: some text editor tmp files 2023-02-09 16:40:06 -08:00
bryan newbold
71d6ce8c5b pds and plc: example .env files for development 2023-02-09 16:22:20 -08:00
Paul Frazee
c8180d823a
Api package fixes (#437)
* Fix api package publishing steps

* Bump @atproto/api@0.0.2
2022-12-21 17:07:40 -06:00
Daniel Holmgren
b26eb75277
Logging (#209)
* messing around w pino

* rework locals & add pino-http

* subsystem logging off env vars

* remove auth tokens from logs

* lots of logging

* re-enable tests

* update enabled check

* fix subsystem logging

* pr fixups
2022-10-05 17:47:00 -05:00
Daniel Holmgren
55e6e54fcf
Did PLC (#181)
* validate the signatures
add the id to the did doc
pid from sha256 of oragin doc
added the tick to diffs extractor
added the key authorisation
add lots of types
add routes for calling the aic
refactor to jest based repo structure

* WIP

* migrate the tests

* more test fixes

* test.

* replace snake case with camel case

* moved to use isolated server for aic

* remove the aic test from the PDS

* clean up some changes outside the aic folder

* fix CaS for saving ticks

* rearange the folder

* missed  one

* cleaned up aic package.json

* broken build

* test passing

* prettier

* pid tests refactor

* fix eslint/prettier setup, add eslint-config-prettier

* misc linting and style tweaks in aic

* minor touchups to aic sign/verify

* tidy error-handling in aic

* tidy-up crypto init in aic

* add aic route for getting a did doc, update /tick routes

* knex -> typeorm

* refactor crypto

* error handling & dependencies

* switching op model & some other cleanup

* change db to use operations

* add cid references to ops & ensure no branching in DB tx

* cleaning up

* rotues

* working on client & tests

* document & oepration tests

* server tests

* cleanup

* remove lobby page & static

* formatting did documents

* aic/pch -> plc

* fixing up some doc semantics

* tooling/test server

* added recovery window

* tx mutex

* test on document formatting

* take validate op out of write tx

* error handling

* readme

* couple bug fixes

* quick readme edit

Co-authored-by: Aaron Goldman <aaron@aarons-mbp.lan>
Co-authored-by: Aaron D Goldman <aaron@blueskyweb.xyz>
Co-authored-by: Devin Ivy <devin@bigroomstudios.com>
2022-09-20 21:28:00 -05:00
Paul Frazee
6283330c3c
Deprecate did:ion, replace did:key implementation, bring dev-env to a working state (#172)
* Remove 'key manager' service from dev-env

* Remove did:web service from dev-env

* Update dev-env to use new server api

* Replace node-fetch with axios

* Remove did:ion from did-sdk

* Disable did:key implementation in did-sdk and remove difficult upstream deps

* Fix dev-env build

* Fixes to dev-env and add user() env function

* Switch to a purely js-function REPL in the dev-env to simplify
2022-09-13 15:01:09 -05:00
dholms
aa4f8d0916 liked by view 2022-09-01 18:32:26 -05:00
Daniel Holmgren
a11c1754a2
Tooling refactor + @ucans/core integration (#152)
* revamp crypto lib

* reworkign ucan capabilities

* fixing up auth lib

* migrating to monorepo

* got jest working with esm

* tests & fixed CID parsing

* common tests up to date

* ported did-sdk

* cli + did:web hanging fix

* ported server

* poted example app

* working on server build

* server build working

* integrating dev-env

* patched up frontend scripts

* patching up cli & dev env build script

* docs & readme

* fixing up package.jsons

* wiped out unneeded dev deps
2022-07-08 11:41:55 -05:00
Daniel Holmgren
4bb2d48cfe
Browser wallet (#134)
* port over ws-relay

* port awake

* port auth lobby

* on success fns

* checkpoint

* move from callbacks to promises

* revamp frontend

* fix bug in ws-relay

* cleaning up error handling, allow subsequent auth flows

* port over example app & fix errors

* refactor app auth code;

* auth app for unauthed device working

* cleaning up

* README

* cleanup logs

* added envs

* ucanReq -> appReq

* cleanup

* remove env vars from authstore

* redirect application auth flow

* fn name change
2022-06-13 18:29:07 -05:00
Daniel Holmgren
f23cf12dae
Change protocol name to ADX (#96)
* Name change to ADX

* readme updates

* use did:example

* quick readme edit

* typo
2022-05-02 17:33:08 -05:00
Daniel Holmgren
a3c27520a9
Run server in-memory (#95)
* Run server in-memory

* README note
2022-05-02 15:23:22 -05:00
Daniel Holmgren
36f752085c
Implement export cmd (#70) 2022-04-12 11:55:59 -05:00
dholms
be5d64bab4 ENV options for server 2022-04-09 20:33:54 -05:00
Daniel Holmgren
94d84d0709
Server federation (#68)
* start of server federation

* repo post/get roots

* push/pull & basic subscriptions

* working on federation

* wip

* federation works!

* cleanup

* remove old user routes
2022-04-09 19:26:34 -05:00
Daniel Holmgren
28d476eec4
CLI (#63)
* linting etc

* wip

* cli overhaul wip

* more cli!

* list followers & restrictions of usernames

* cleanup & readmes

* readme edit

* ignore yarn erros

* rm cfg from cmds

* account info in cli

* readme
2022-04-06 19:05:37 -05:00
Daniel Holmgren
28722d7d92
Basic data server (#56)
* basic server

* wiring up some routes

* wip

* wip

* refactor db & add microblog schemas

* index posts

* posts client

* start on error handling

* wrap up error handling & interaction routes

* like client

* user-store -> repo

* fix up routes & tests

* add relationships branch back in

* store -> blockstore & fix up tests

* relationship tests

* relationship sync tests

* update emoji

* follow db, routes & client

* finish data routes

* likes tests & register client

* wrap up basic data routes
2022-03-30 14:50:33 -05:00
Daniel Holmgren
78579b2f2d git ignore 2022-01-27 19:59:05 -07:00
Daniel Holmgren
1ec019e056 cleanup 2022-01-27 19:58:48 -07:00
Jay Graber
5904ba3e5a gitignore binaries ugh 2022-01-06 21:48:58 -08:00
Daniel Holmgren
b87a62f029 convert to monorepo 2022-01-05 23:04:21 -06:00
@wwwjim
b3110f0eb5 initial starter commit 2021-04-06 18:40:32 -07:00