OAuth Roadmap #2656
Replies: 13 comments 42 replies
-
Exciting stuff! Re-reading the proposal, particularly the part that mentions the specs to be used: PAR, PKCE, and DPoP. I'm wondering how widespread these implementations are in the ecosystem? Or do we expect there to be lots of work in auth libraries to support atproto login? A specific related question: what's missing from https://authjs.dev to take advantage of this? Would be great if you folks could show a demo of it working with Auth.js! |
Beta Was this translation helpful? Give feedback.
-
Exciting! Are you all still thinking through whether or how much you plan to integrate and require OAuth directly into ATProto itself? Notably:
recommended is a useful word there, but notably it's not required. You also mention the phrase "login with atproto," which sounds great, but if it's OAuth-based, would obviously require PDSes to support OAuth. Long term, do you foresee that OAuth is more of a nice-to-have for PDSes, or closer to a requirement? |
Beta Was this translation helpful? Give feedback.
-
Do you have any guidance on what language to use for client applications with login forms? I'm particularly interested in staying true to the idea that their atprotocol network handle is the thing that they use and also reducing confusion about handles or identifiers for other services. |
Beta Was this translation helpful? Give feedback.
-
Will this work with Apple's AuthenticationServices (e.g. ASWebAuthenticationSession)? This is the standard mechanism used on iOS and it's fully integrated with the password autofill APIs - it's very easy for both developers and customers to use. The reason I ask is because I can't find any information about authorization endpoints or callback urls (ASWebAuthenticationSession needs both). |
Beta Was this translation helpful? Give feedback.
-
Late to this party. @bnewbold not sure if this is the best place or if I should comment directly on bluesky-social/atproto-website#326. Let me know. A few things:
|
Beta Was this translation helpful? Give feedback.
-
@bnewbold I've started trying to implement atproto OAuth for logging in a client application. So far I'm able to resolve a handle to a DID, retrieve the DID document and the AS metadata, and redirect to the AS. That's where I'm stuck. It's giving me a pretty opaque error: Any suggestions on how to debug? I'm writing my implementation from scratch because I want to reduce dependencies, and I want to learn the protocol. |
Beta Was this translation helpful? Give feedback.
-
@bnewbold where's the best place to give feedback on the protocol? I'm working on a universal login middleware with a focus on decentralized protocols. It can be dropped into any JavaScript backend (https://github.com/lastlogin-net/decent-auth-js). I've got a demo running here: https://decent-auth-demo.lastlogin.io/ It currently works with Mastodon, ATProto, and LastLogin. IndieAuth shouldn't be too hard to add. My main complaint is still that hosting the client metadata is required. This means my middleware won't work for atproto for self-hosted apps that don't have a public IP. It will still work for Mastodon and LastLogin, since Mastodon supports dynamic client registration and LastLogin support anonymous clients (only the clien_id URL is required to display to the user). One other nitpick is that I don't think you should show the client name to the user for unverified clients. Even if you show the client_id URL as well, if a malicious client used the name "Google" it could still trick some users. |
Beta Was this translation helpful? Give feedback.
-
Hi all, I'm currently implementing the atproto OAuth flow for a native application (mobile/desktop) and have a question regarding best practices for user handle resolution. In my implementation, I'm currently resolving user handles using ordinary DNS (unencrypted). However, I'm wondering whether it's considered best practice for native clients to use a more secure DNS resolution method, such as DNS over HTTPS, to enhance privacy and security. Could you please advise on what is generally recommended or expected for native OAuth clients in this context? Thanks |
Beta Was this translation helpful? Give feedback.
-
You should probably look at what https://oauth.net/ recommends (which is really "whatever works"). Having a strict requirement for DoH or some kind of check of DNSSEC might be a bit of overkill; but I can see that being a nice feature in an application.
…On Tue, Oct 1, 2024, at 13:17, llksz wrote:
Hi all,
I'm currently implementing the atproto OAuth flow for a native
application and have a question regarding best practices for user
handle resolution.
In my implementation, I'm currently resolving user handles using
ordinary DNS (unencrypted). However, I'm wondering whether it's
considered best practice for native clients to use a more secure DNS
resolution method, such as DNS over HTTPS, to enhance privacy and
security.
Could you please advise on what is generally recommended or expected
for native OAuth clients in this context?
Thanks
|
Beta Was this translation helpful? Give feedback.
-
It would be very nice if the option to give longer-lived or shorter-lived tokens were up to the user, rather than what seemed more "secure". I distrust backends/BFFs more than SPAs. With backends, even if there is an open source code available somewhere it is still essentially a black box that I can't peek into any time, meanwhile with SPAs I could easily do so even if it comes down to making sense of bundled/minified code. |
Beta Was this translation helpful? Give feedback.
-
One issue I'm running into with the current first-party implementation: it appears that the oauth authorize endpoint is hosted at |
Beta Was this translation helpful? Give feedback.
-
Any chance the auth page could hide the path part of the client-id URI if it's a set Also, the developer doc mentions a concept of trusted client IDs (where the client_name and logo_uri fields are used); is there going to be a formal way to apply for inclusion in bsky.social's trusted client list in the future? |
Beta Was this translation helpful? Give feedback.
-
OAuth is nigh! Protocol support has been a long time coming and we are pumped. It should greatly improve the user and developer experiences building secure apps and integrations on atproto. And could make the handles-and-DIDs identity system a more useful, re-usable, and inter-operable component for other non-atproto apps and protocols to built on.
At the same time, authentication and authorization are complex, security-sensitive, and central to the design of almost every client in the ecosystem. We want to clarify and temper expectations around when specific functionality will be available. This is a flexible/living roadmap for how roll-out will go.
Developer Preview Phase
UPDATE: September 25th blog post announcing this phase
In this phase, early-adopter client developers can start using OAuth as an alternative to App Passwords. More sophisticated use-cases (eg, granular access scopes and additional 2FA methods) may not be available yet, and support in client SDKs will probably be work-in-progress. We roughly expect to enter this phase in late summer 2024.
Transition Phase
In this phase, support for client developers should be solid, and most apps will be encouraged and expected to migrate to OAuth. We don't want to be too disruptive and expect major work from small teams and volunteer/hobbyist devs in the ecosystem, so this phase will last at least a few months.
We roughly expect to be in this phase in autumn 2024.
End State
This is the goal we are working towards.
We roughly hope to get to this point some time in 2025.
Open Questions
Account Management Lexicons:: the PDS web interface is expected to become the primary interface for managing things like handles, account deactivation/deletion, updating email, signup, account migration, etc. While these will remain "in-protocol" behaviors and actions, it isn't clear if the current
com.atproto
Lexicons supporting them should be required, optional, or even part of atproto itself at all. This is an "end state" question.Alternative Auth Mechanisms: the flavor of OAuth used with atproto will require some form of publicly available client metadata. This is reasonable for most client apps, but would be friction for simple demo scripts and basic bots. We hope to have an simple alternative mechanism similar to "developer API tokens" on other platforms, where developers can generate secret tokens via the PDS web interface and pass them to CLI scripts and bots for persistent auth with limited scopes. Not yet clear if this will be an evolution of app-passwords or a new concept, and if this will be an optional or required part of the protocol, or something left up to PDS implementations to decide on. This is probably a "transition phase" question.
Service Auth: atproto uses a separate flavor of authentication between servers and services, and OAuth will not directly impact this. It is possible that this aspect of auth in atproto will also evolve in the future.
Beta Was this translation helpful? Give feedback.
All reactions