Matthieu 🦋's Avatar

Matthieu 🦋

@matthieu.bsky.team

Back-end engineer at Bluesky

9,568 Followers  |  222 Following  |  106 Posts  |  Joined: 25.09.2023  |  1.6978

Latest posts by matthieu.bsky.team on Bluesky

Yep

14.07.2025 18:37 — 👍 3    🔁 0    💬 1    📌 0

This is actually a "feature". Since PDS can host HTML Blobs (and thus JS), I wanted to prevent XSS attacks. I think we could reasonably make this configurable though, and allowlist some uris (checked against the referer)

14.07.2025 16:40 — 👍 10    🔁 0    💬 1    📌 0

We just relaxed restrictions around redirect uris 😜

07.07.2025 11:32 — 👍 1    🔁 0    💬 0    📌 0
Preview
atproto/packages/oauth/oauth-client-browser-example at main · bluesky-social/atproto Social networking technology created by Bluesky. Contribute to bluesky-social/atproto development by creating an account on GitHub.

Here is an example implementation. See main.tsx to build a client ID for local dev. Then use
client=await BrowerOAuthClient.load({clientId,allowHttp:true})
Then client.init() if that does not return a value use .restore()

23.06.2025 19:51 — 👍 2    🔁 0    💬 0    📌 0

I wish atproto 's reference implementation was built using hapijs !

17.06.2025 16:30 — 👍 2    🔁 0    💬 1    📌 0

I guess that's what OAuth 2.1 is for

17.06.2025 12:05 — 👍 3    🔁 0    💬 1    📌 0
OAuth Client Security in the Atmosphere · bluesky-social atproto · Discussion #3950 The following was written by the Bluesky team as an overview of OAuth client security considerations, especially for client app developers or readers of the ATProto OAuth profile specification. Set...

Two types of OAuth client are supported by atproto: "public" and "confidential"

This new article digs in to the security trade-offs and safety mechanisms at play, and how they impact different app architectures: TMBs, BFFs, SPAs, etc

13.06.2025 00:14 — 👍 319    🔁 45    💬 9    📌 4

Thank YOU!

10.06.2025 15:29 — 👍 6    🔁 0    💬 1    📌 0

Yep, exactly

05.06.2025 16:46 — 👍 2    🔁 0    💬 0    📌 0

Large scale apps wouldn't want to bind every single sessions to a single value (nonce) as this could cause a lot of un-happy users when that value changes. The recommendation is to maintain multiple keys (e.g. one per version of the app) so that only problematic sessions can be revoked.

05.06.2025 15:03 — 👍 3    🔁 0    💬 0    📌 0

Yep, a client could totally do that! But you can still have more than 1. The app could request the backend "please use this kid to sign the attestation". and that "kid" can be determined in many different ways (time based, version based, etc.)

05.06.2025 15:01 — 👍 3    🔁 0    💬 1    📌 0

We are currently working on making ATProto OAuth easier on devs. This proposal is one of steps we are taking to make it happen. Stay tuned...

05.06.2025 08:30 — 👍 20    🔁 0    💬 4    📌 0

Here is why: If an app/spa gets compromised (XSS, supply chain attack, ...), confidential clients can revoke the private key that was used to authenticate compromised version of the app, effectively stopping the attack (assuming the "bug" was also fixed). Public clients have no such mechanism.

05.06.2025 08:22 — 👍 8    🔁 0    💬 2    📌 0

Yeah you'd probably hit the file size limit for the client metadata document pretty fast if you don't cleanup "old" uris.

28.04.2025 10:05 — 👍 4    🔁 0    💬 0    📌 0

If there is more than one redirect_uris in the client metadata, the client has to provide the one it wants the AS to use during PAR.

28.04.2025 10:03 — 👍 3    🔁 0    💬 0    📌 0

Hey @tom.sherman.is, assuming that we'd lift the "same origin" constraint on redirect_uris, would that be enough to allow Vercel preview apps to work ? How would you make sure that the redirect_uris from the (now single) client metadata document contains all the preview apps ?

28.04.2025 08:30 — 👍 3    🔁 0    💬 1    📌 0

We deliberately chose to add strong constraints to our initial spec so that they could be relaxed without breaking compatibility. The redirect_uris's "same origin" restriction is a good example of constraint we'd be willing to lift, based on feedback like this one.

28.04.2025 08:16 — 👍 6    🔁 0    💬 1    📌 0

👻

24.04.2025 16:00 — 👍 3    🔁 0    💬 0    📌 0

🔥

24.04.2025 15:59 — 👍 2    🔁 0    💬 0    📌 0

🥳

24.04.2025 15:59 — 👍 0    🔁 0    💬 0    📌 0

💙

24.04.2025 15:59 — 👍 0    🔁 0    💬 0    📌 0
AHOY! European Social Web Day 2025 - Bluesky / atproto Starts at 04/24/25 08:00 am CEST. Join us in Hamburg on April 24, 2025 to build the future of a cooperative, European open social web—a paradigm for a better internet built on decentralization and use...

It would be awesome if starter packs were automatically created from specific @smokesignal.events ! Like, I'm going to the AHOY! conference next week and I'd love to have an easy way to follow everyone else going.

17.04.2025 10:08 — 👍 25    🔁 1    💬 3    📌 0

Excited for the @ahoy.eu conf of next week.

16.04.2025 13:51 — 👍 33    🔁 9    💬 1    📌 0

A way you can avoid this, if you are developing a client, is to rely on client authentication. This should give you 30 days of refresh token validity in place of 2.

16.04.2025 13:07 — 👍 4    🔁 0    💬 2    📌 0

We are following OAuth 2.1 here:

> The authorization server MUST consider the security implications of interacting with unauthenticated clients and take measures to limit the potential exposure of tokens issued to such clients, (e.g., limiting the lifetime of refresh tokens).

16.04.2025 13:05 — 👍 4    🔁 0    💬 1    📌 0

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse. Ibi

01.04.2025 13:00 — 👍 24    🔁 1    💬 4    📌 0

plcfs 🫣

01.04.2025 08:29 — 👍 27    🔁 0    💬 0    📌 1
zuck wearing a shirt that says "aut zuck aut nihil"

zuck wearing a shirt that says "aut zuck aut nihil"

jay graber, bluesky ceo, wearing a shirt that says "mundus sine caesaribus"

jay graber, bluesky ceo, wearing a shirt that says "mundus sine caesaribus"

10.03.2025 18:09 — 👍 10333    🔁 1712    💬 155    📌 543

It's weird to me the they focus all that energy into new features while Zed is still missing some features that are absolutely needed needed for its adoption...

14.02.2025 08:04 — 👍 7    🔁 0    💬 1    📌 0
Preview
@atproto/api v0.14.0 release notes | Bluesky Today we are excited to announce the availability of version 0.14 of our TypeScript SDK on npm.

🚀 Just released a new version of our TypeScript SDK for Bluesky!

This update brings important improvements to the typings of our data model, making integration smoother and more reliable. Learn a thing or two about Bluesky’s API and the AT Protocol in the blog article we wrote for the occasion.

13.02.2025 17:57 — 👍 526    🔁 53    💬 17    📌 3

@matthieu.bsky.team is following 19 prominent accounts