-
-
Notifications
You must be signed in to change notification settings - Fork 27
OAuth #60
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
Comments
|
Oauth is pretty high and is green field. I'm working on a relay impl that'll likely take a few weeks as I juggle other non-development things for Blacksky. I know Rip is working on all things related to ImportRepos. As Erlend mentioned though, Oauth is important for connecting to the rest of the atproto ecosystem and new apps. So if you have the capacity and desire to take on even part of this it'd be greatly appreciated.
Atrium is primarily an API client/sdk library so I can't imagine there's much dependencies between what rsky needs on the PDS side. There are official implementation guides for client implementations but I don't know that one exists for PDS implementations (probably because there are far fewer production-ready PDS impls) which has been the primary barrier to my diving into this personally. I'd personally take a "translate whatever the TS impl is doing" approach for this. That'd make it easier for me to review as well. If in addition to building this and testing it, you could also provide some minimal documentation like you've done for other contributions that'd be awesome. |
I'll start with outlining the work to be done and chip away on it bit by bit! |
I was actually thinking about this being the next thing I took a look at after import and account migration related work was finished, so I'd love to see the outline! |
OAuth Outline
|
@TheRipperoni What do you think? are there parts of this you think we need to change? some of those workspace members will be hefty. Happy to tackle it together! Are there particular parts you'd like to work on? I'm happy to tackle other parts. |
I'm going to start work on the oauth-types "module" |
|
I will have a PR ready for oauth provider before end of month. there's quite of bit of types and I'm going back and forth with the typescript reference code base on what I'm making. |
Do you have a forked repository for it? I'd be happy to contribute |
https://github.com/afbase/rsky/tree/afbase/oauth-types - where i left off last week |
Much appreciated |
Since you are covering types at the moment, I think I'm able to start off by tackling the general skeleton for the Stores and Managers the typescript implementation utilizes |
I should have something ready with all the types by Tuesday. I plan to push something up later into the weekend. |
That would be perfect. I have some skeleton ready to go, including the well-known, but need the types to properly utilize it |
Important This is a lot of code. I definitely used AI to generate a good heap of it 😓 and put in my own bits here and there as I saw fit. https://github.com/afbase/rsky/tree/afbase/oauth-types - is just about ready. 85% test pass rate right now and I'm going to finish the testing tomorrow (Tuesday). but i think it's just about ready for trying things out on your end. |
Sounds good, I'll start then. I'll give it a scan over as working to determine if there is anything off with it that the AI did. Thanks! |
@TheRipperoni i've updated my branch with more tests. the |
Sounds good! I was working today on building out the general skeleton for the rest. The biggest thing still is deciding how to go about the actual jwk part, as that we have to deviate more from the typescript implementation on as the library used doesn't really have a 1:1 in rust |
There is jwk-rs that appears to work with jsonwebtoken which I use here and there in my oauth-types. I'm happy to implement the rest of the corresponding jwk module if it would be of any help. I focused mainly on Jwt as it was a type that the oauth-types in the typescript codebase referred to a Jwt type. |
I'll take a look today and let you know! |
@TheRipperoni - my branch is testing at 100% on commit 72b189f Summary of Changes to rsky-oauth Codebase from f274ce9..72b189fOverview of Changes Made Today (Wed Feb 26)The changes focus on several areas across the OAuth implementation:
File-by-File Changes
|
Sounds great! It's going to take me a couple days to get started, so if you had anything you wanted to work on it in the meanwhile go for it |
Coming back to work on this now |
Well known and basic endpoint skeleton is setup |
Have much more ready to go, just need to validate it carefully |
Would love to see all this work being upstreamed into rsky proper soon, as that will enable my collaborators to contribute towards #67 |
Had to step back for a moment, but will try to circle back to pushing what I have thus far by end of the week |
Spending development time this week focused only on this to get it out |
Just push a lot into my OAuth fork. Was able to test PAR api earlier, and well-known functions. Going to continue development this week |
Implementing a chance to the AccountManager to better reflect the typescript reference. Once that's done tomorrow, should be able to bring most of it all together |
Still working on it in this branch in particular |
Had a bit of a break, but have authorize, accept, reject, sign-in fairly close to working as expected. Added integration tests for them as well |
Currently blocked on this |
Status: See OAuth outline below.
OAuth is the default method of authentication in atproto.
The task at hand is neatly described by the parallel effort in millipds:
Some of this is already done in atrium: https://github.com/sugyan/atrium/tree/main/atrium-oauth
There are two additional PRs pertaining to OAuth still pending, though I’m not sure if they’re necessary for rsky’s purposes:
The text was updated successfully, but these errors were encountered: