• grepfru_it 17 hours ago

    Keycloak or auth0. The app should support oauth2, if it does not it gets traefik-forward-auth (or whatever it’s called) to enforce mfa then you are in.

    There are tons of open source projects to complete the self service experience, from sign up systems to self service password resets

    • hermanradtke 17 hours ago

      Keycloak has too many new major releases. It is a real pain to keep up with.

      • random_savv 8 hours ago

        Their version numbers are meaningless in that way. Most major up upgrades are non events

    • diggan 19 hours ago

      This is the absolutely simplest of authentication (not authorization) schemes I've used that is both easy for people to use and prevents the simplest of spam/robots:

      - Be able to store two types of tokens, one that is temporary, and one that is "permanent"

      - Users can use their email address to get sent a temporary token (which expires if unused after X minutes)

      - Users can click that link to change the temporary token for a "permanent" token they (the frontend) can use for authentication

      - Clicking "Logout" invalidates the currently used "permanent" token

      Biggest issue is making sure that whatever email provider you use for the "Login Emails" consistently sends emails quickly, as there is nothing worse but sitting for 2-3 minutes waiting for a login email because the provider batches sends or something.

      This would specifically be for side projects. If it grows beyond that, you really should implement something with proper rotation and more, but there are tons of resources about that out there.

      • alberth 18 hours ago

        More commonly known as “magic links” (login).

        • sieabahlpark 18 hours ago

          I personally just really don't like magic links auth. It just feels brittle and if your email provider attempts to scan urls to see where they actually go you end up giving them an auth token and by the time the user clicks the link it's invalidated (or you don't invalidate the link at all which is worse).

          If you have an issue with bots on your platform you're going to always have bot problems. It's trivial to abuse your auth to derank your standing too. I can force your app to send out bounced emails to hundreds and thousands of bad emails. Costing you $$ or rep in the email exchange. The second affects your ability to authenticate legitimate users too.

          Wish magic links would just go away and be acknowledged as an anti-pattern.

          • throwitaway1123 11 hours ago

            > if your email provider attempts to scan urls to see where they actually go you end up giving them an auth token

            One way you can handle this is to place the token in the hash portion of the url (which doesn't get sent to servers during an HTTP request), and then have JS on the frontend send the token to your backend manually. As long as the email provider isn't scanning links via a headless browser that executes JS, this should work.

            I agree with your point about email abuse though (although you still have to prevent bots from abusing email based password resets).

            • diggan 17 hours ago

              > if your email provider attempts to scan urls to see where they actually go you end up giving them an auth token

              This is what the "change the temporary token for a "permanent" token they (the frontend) can use for authentication" part is for, as it'll require a browser to visit the page so the token can be set in the frontend after making the "switch" with the authentication backend. The tokens get invalidated when used.

              Regarding abuse, there is a lot of other things around the design itself that has to be considered that I didn't mention. Rate-limits, validation, verification, operations and other things feel kind of besides the meat of the pattern. Otherwise we'll end up with very long comments :)

              • AlbinoDrought 17 hours ago

                For some prior art, Okta avoids the email link scanning issue by requiring "same browser, same device" (sessions) [1]. An OTP code is included in the email as a fallback for users receiving mail on a different device than they're trying to log in to.

                [1]: https://developer.okta.com/docs/guides/email-magic-links-ove...

            • notamy 16 hours ago

              I’ve been using https://clerk.com. Not needing to build authentication / the UI / … as well as not worrying about hosting it myself has been nice.

              • tommiegannert 4 hours ago

                I use Traefik with OpenID Connect for everything, and Google as IdP. It's few enough people that I simply add them manually to traefik-forward-auth's settings in Docker Compose.

                https://github.com/thomseddon/traefik-forward-auth

                • masto 19 hours ago

                  I've been in big tech and out of touch with the real world for a while, and I started a project only a couple of weeks ago to get a feel for what the cool kids are doing in web dev in 2024. So I can't claim any deep authority or experience with a lot of different approaches. But I picked Clerk because it was in a tutorial, and so far so good. It couldn't have been much easier, and the free tier seems more than generous enough to get through the prototype stage.

                  My main concern is that I don't want to weld too much of my design to any one service provider, so I've got to be careful about taking too much advantage of their feature set and API so that it won't be a pain if they go away or it becomes necessary to migrate to something else.

                  • simonhfrost 13 hours ago

                    Lock in is definitely a valid concern, I emailed customer support and they replied with this:

                    Certainly understandable to worry about lock-in! We do try and make data exports as easy as possible. You can use our Backend API directly to retrieve all data for your users except for passwords: https://clerk.com/docs/reference/backend-api/tag/Users#opera...

                    If you need encrypted passwords in the export, you can contact our support team who will verify your account and provide a link from within your Clerk Dashboard to download the complete export directly.

                  • xena 19 hours ago

                    A lot of my side projects are only visible over a VPN. I have no auth for them as it is not needed.

                    • rudasn 17 hours ago

                      Ah interesting! I've been experimenting a similar setup.

                      How do you manage peers and configs?

                    • codingclaws 17 hours ago

                      I develop an internet forum [0] that uses express-session with a Redis datastore for standard username and password website login. Separately, it also has a JSON API that uses OAuth 2 auth code flow with PKCE [1].

                      [0] https://github.com/ferg1e/comment-castles

                      [1] https://www.commentcastles.org/api#api-user-authentication

                      • dizhn 17 hours ago

                        I first install and configured Authentik with totp then found a million things I can integrate it into because it basically supports everything.

                        • koliber 19 hours ago

                          In my latest side project I am allowing people to start using the tool without signing up. You can see it working on sandbox.wasitsent.com.

                          I am using Django’s user system. When a user comes and wants to use the app, I create a Django user and mark it as auto-created. Later, when they decide to sign up, I fill the details and I mark it as auto-created.

                          Using password auth for now. Will migrate to auth0 if enterprise customers knock on the door and want SAML.

                          • WhatsName 19 hours ago

                            Django allauth, 10 years later still a no-brainer.

                            For selfhosting Authentik + Traefik forward auth is a unbeatable combo

                            • ukuina 19 hours ago
                              • naveen99 9 hours ago

                                No login required.

                                Just some ip based rate limits.

                                Ban misbehaved bot ip addresses.

                                https://hn.garglet.com (advanced search for hacker news)

                                • infogulch 19 hours ago

                                  I was thinking Kanidm [1] for authentication and SpciceDB [2] for authorization would be a good combo, but I haven't gotten around to trying it yet.

                                  [1]: https://kanidm.com/

                                  [2]: https://authzed.com/docs/spicedb/getting-started/discovering...

                                  • ldenoue 20 hours ago

                                    I use firebase auth with Google, Facebook and email (magic link)

                                    This is live at https://screenrun.app/

                                    • freetonik 18 hours ago

                                      Email+password, jwt tokens. Nothing fancy.

                                      • dvektor 16 hours ago

                                        Generally this. There are obvious reasons you might need to use Oauth2/OIDC... but for side projects, I really don't get why people are so opposed to storing a bcrypt or argon hash, and keeping a session table or using a JWT. I can see "never rolling your own auth" if that meant using your own hand-rolled crypto libraries, but somehow it seems to have became "you must pay for a service or use some magic library".

                                      • sandreas 21 hours ago

                                        Social auth almost always means oauth (2.0). It's good to have this, because you could technically Deploy your own oauth provider.

                                        However, for my smaller personal side projects I rely on a simple JWT auth based on JWT, QR-codes and https-only AS secure AS possible cookies.

                                        I plan to try openid but i did not habe the time yet.

                                        If you have a userbase, a local username/password login should be at least an Option...

                                        • dangprivalpha 19 hours ago

                                          None, because my projects never make it as far as launching.

                                          • JanisErdmanis 19 hours ago

                                            For admin panels, I use SSH port forwarding, as no additional configuration is needed for that. For users, I use email invite codes that contain the hash of the server’s public key and are pasted into a stand-alone client. That way, I don't need to maintain TLS certificates.

                                            • SLKerrigan 16 hours ago
                                              • random_savv 19 hours ago

                                                We use Keycloak

                                                • bearjaws 19 hours ago

                                                  Supabase has very easy to setup auth while scaling beyond auth. You can use it standalone without issue.

                                                  • djaouen 19 hours ago

                                                    Phoenix Auth

                                                    • antonpirker 19 hours ago

                                                      None or username/pwd

                                                      • impure 15 hours ago

                                                        Google, Apple, and Email using PocketBase.

                                                        • chgs 19 hours ago

                                                          X509 certs. They work nicely in an offline situation.

                                                          • j45 17 hours ago

                                                            Appwrite, all in one, and it shockingly just works from install to go focus on building the side projects.

                                                            Cheap/ free to self host. I have tried a bunch of the other ones and they all had things I liked but Appwrite gave me nothing to complain about other than getting on with building :)

                                                            • fragmede 19 hours ago

                                                              Amazon Cognito. If I ever scale past a handful of users and it starts costing money I'll revisit but for a side project? Auth is the least interesting part and I just want it to work securely with no fuss.

                                                              • John23832 19 hours ago

                                                                Supabase

                                                                • marginalia_nu 19 hours ago

                                                                  I make it a point not to have public user accounts for my stuff because it's such a liability.

                                                                  For admin, I use HTTP basic auth like the boomer I strive to be.

                                                                  • pdyc 7 hours ago

                                                                    no auth at all

                                                                    • thot_experiment 18 hours ago

                                                                      None. Users should handle their own data.

                                                                      • shortrounddev2 17 hours ago

                                                                        I used to use Facebook because it's really easy to work with

                                                                        • purple-leafy 18 hours ago

                                                                          Firebase

                                                                          • gedy 19 hours ago

                                                                            Auth0 and FusionAuth

                                                                            • rch 19 hours ago

                                                                              +1 for FusionAuth

                                                                            • mjomaa 19 hours ago

                                                                              Auth.js!

                                                                              Supported providers: https://authjs.dev/getting-started/providers/github

                                                                              It's been really great so far and I can recommend it if you have a JS/TS codebase.

                                                                              ----------------------------

                                                                              You can test Auth.js (v5 beta.22) in my Next.js 15 boilerplate:

                                                                              https://achromatic.dev

                                                                              • Credentials auth

                                                                              • Google and Microsoft login

                                                                              • Connected accounts

                                                                              • Multi-factor authentication (via authenticator app)

                                                                              • Session management

                                                                              • reducesuffering 17 hours ago

                                                                                That's what I'm using too. Along with a very easy integration with Resend for magic link email.