An Identity, OpenID Connect, and OAuth2 Provider.
- Architecture: Clean architecture, Domain Driven Development.
- Database: gorm, go-migrate, postgreSQL, redis.
- Mux: go-chi.
- RPC: gRPC.
- Docs: swaggo.
- Container: Docker.
- Deployment: Docker compose.
Strictly follow Clean Architecture and DDD.
-
OAuth2 Provider with:
- Authorization Code Flow *completed*.
- Authorization Code Flow With PKCE *completed*.
- Implicit Flow.
- Resource Owner Password Credentials Flow *completed*.
- Client Credentials Flow.
- Refresh Token Flow *completed*.
- Device Flow (low priority).
-
Support Open ID Connect.
-
Allow integrate with external Identity/OAuth2 Provider *completed*.
- 100M users.
- 1M new users per day.
- 10M OAuth2 requests per day.
$ make start-swaggerPlease refer todennus-orchestration for starting our system.
- Create the first user. The first registered user is always admininistrator.
POST /users
{
"username": "admin",
"password": "P@ssw0rd"
}
- Create the first OAuth2 Client. This API Endpoint will be blocked after the first client is created.
POST /oauth2_clients/first
{
"name": "Admin Client",
"is_confidential": true,
"username": "admin",
"password": "P@ssw0rd"
}
- You can use the OAuth2 flow now.
POST /oauth2/token
grant_type=password&
client_id=CLIENT_ID&
client_secret=CLIENT_SECRET&
username=admin&
password=P@ssw0rd