3SO — Shadow Single Sign-On
3SO (shadow-sso) is a Go-native OAuth 2.0 and OpenID Connect implementation, distributed both as a standalone server (ssso) with a companion CLI (ssoctl) and as a library you embed directly in your own Go services. It ships with multi-factor authentication, enterprise directory federation, and a high-performance distributed token store — the pieces most OAuth libraries leave for you to bolt on separately.
Key Features
Distributed Token Store (DTS)
OAuth artifacts like authorization codes and access tokens are short-lived and high-churn — a poor fit for a general-purpose document database under heavy load. 3SO can offload them to ssso-dts, a dedicated gRPC microservice backed by BBoltDB, while MongoDB continues to hold persistent data: user profiles, OAuth clients, and service accounts.
The result is a hybrid storage model — sub-millisecond key-value operations for ephemeral tokens, horizontal scaling of the DTS tier independent of MongoDB, and automatic expiration cleanup — deployable via Docker Compose or the included Helm chart.
3SO vs. Keycloak
An honest comparison — Keycloak is a mature, widely-deployed IdP with a much larger surface area. 3SO trades some of that breadth for a lighter deployment footprint and MFA that's built in rather than bolted on.
| Capability | 3SO | Keycloak |
|---|---|---|
| OAuth 2.0 core endpoints | ||
| PKCE support | ||
| Built-in MFA (TOTP/HOTP/SMS/push) | Via extensions | |
| Deployment footprint | Single Go binary + MongoDB | JVM + admin console |
| Distributed token store | BBoltDB gRPC service (DTS) | Infinispan cache |
| Device Authorization Grant endpoint | Grant supported; dedicated endpoint in development | |
| CIBA / Pushed Authorization Requests | ||
| Named FAPI 1/2 security profiles | ||
| License | MIT (open source) | Apache 2.0 (open source) |
OAuth 2.0 Flows
OAuth 2.0 supports several different flows or methods for obtaining an access token. These flows are designed to cater to different use cases and security requirements.