bluewave-labs / bluewave-labs/Checkmate

Feature Request: Add OIDC authentication

Open
#1,689 29 comments 28 reactions 0 assignees View on GitHub
backend frontend
Dominant language
TypeScript
Stars
10.8k
Forks
1.2k
Avg merge
1d 4h
Merged PRs (30d)
74

Description

**Is your feature request related to a problem? Please describe.**

Currently, there is no 2nd factor for authentication, which makes ones setup of Checkmate vulnerable to bruteforce attacks, especially when using a bad or reused password.

It would be sensible and/or appreciated to also implement a 2nd factor for email/password authentication and/or Passkeys but from my expierience its asier to just allow OpenID Connect first. Most IDPs have these of security features already implemented.

**Describe the solution you'd like**

Implement an additional login/signup method with an arbitrary OIDC identity provider (like Authentic, Keycloak, Azure, etc) to handle the complete authentication. Securitywise it would be good to be able to disable email + password authentication (because of the mentioned possible security implications of password auth above) if you chose to use an external IDP.
In a later expansion you could also add authorization features OICD provices (e.g. Team selection).

**Describe alternatives you've considered**

- You could follow many sites by adding support for _specific_ OAuth Providers (most of them are also just OICD) like "Log in with..." Google, Apple, Azure, Meta, Github, etc.
Because an generic OICD implemtation would cover most IDPs, I'd suggest starting with the generic alterative. Additionally you can Imagine that these "free" IDPs do collect user data, so it's a questionable alternative, though easier to configure for the enduser. ManyM sites allowing login through social media providers also allow generic OICD.

- Implement a 2nd factor inside your app yourself, preferably with google authenticator (free for you and the user), which many password managers are able to fill in automatically.

**Additional context**
This proposal because stems from a question in your [Discord](https://foofy.link/OQxL) :) @gorkem-bwl

Contributor guide

Open the contributing guide

Research direction

Start by locating the existing email/password login and signup entry points. Define how an arbitrary OIDC identity provider would handle authentication and how email/password login could be disabled. Done should include a working OIDC login/signup method and a supported way to disable password authentication.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
authentication, backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.