LemmyNet / lemmy-js-client

A javascript / typescript http and websocket client and type system for Lemmy.
GNU Affero General Public License v3.0
135 stars 55 forks source link

SSO Support #297

Open privacyguard opened 1 month ago

privacyguard commented 1 month ago

Implements https://github.com/LemmyNet/lemmy/issues/2930.

This PR is based on https://github.com/LemmyNet/lemmy/pull/4238 and https://github.com/LemmyNet/lemmy-js-client/pull/219 by @thepaperpilot.

We noticed that the original PR is outdated and has a lot of conflicts with the recent changes. We tried to keep the previous commits whenever possible (in lemmy-js-client and lemmy-ui).

How is works?

Admins can configure external OIDC providers from within the admin settings. Once an OIDC provider is configured, users will be able to Sign In / Sign Up using external OIDC providers. Available Configuration

The usual OIDC endpoints auto_verify_email: When enabled, users signing up using OIDC won't need to go through email verification. auto_approve_application: When enabled, users signing up using OIDC won't need manual approval even if applications are required. account_linking_enabled: When enabled, users attempting with sign up with OIDC using an existing user email would link the OIDC account to the existing user. Disclaimer This is our first ever rust contribution.

Who we are? Why are we contributing to Lemmy? Privacy Portal is an OIDC provider and an email aliasing service focused on privacy. We have decided to contribute to select open source projects that empower Free Speech online. Our OIDC provider services are currently offered free of charge. In the future, we will have a generous free plan that will cover most deployments. Using Privacy Portal as your OIDC provider offers your users great privacy benefits. User emails will automatically get replaced by single-purpose Privacy Aliases during sign up. Users will be able to enter any name (to be used as username). Users can benefit from email encryption and much more.