Skip to content

Commit 1838e08

Browse files
documentation: this commit updates README.md to enhance project description, structure, and installation instructions for SDK packages
1 parent 96414b0 commit 1838e08

1 file changed

Lines changed: 74 additions & 9 deletions

File tree

README.md

Lines changed: 74 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,82 @@
1-
<h1 align="center">FEDERATION GATEWAY</h1>
1+
# FEDERATION GATEWAY
22

3-
### About This Project
3+
Federation Gateway is a platform built for teams that need a practical and lightweight **Identity Provider** focused on authentication, identity, and permissions.
44

5-
Yes, we're yet another Identity Provider. There are much more robust options out there like **Keycloak**, **Auth0**, **Okta**, and **IdentityServer**, but our focus is simplicity.
5+
The platform covers the essential identity lifecycle for modern applications, including tenant isolation, user management, access control, and integration through a simple .NET SDK. The goal is to centralize identity concerns without the overhead of large enterprise IAM platforms.
66

7-
With our Identity Provider, you can quickly spin up your identity service — all you need is a MongoDB instance, which can easily be obtained for free with 512MB on [MongoDB Atlas](https://www.mongodb.com/cloud/atlas) (at least as of today).
7+
## STRUCTURE
88

9-
Our solution is also fully multi-tenant: each tenant you create can have its own users, permissions, and more.
9+
This repository is a **monorepo** that houses multiple independent applications and packages under a single version-controlled workspace. The monorepo approach is used for centralized visibility, shared tooling, and easier cross-context navigation, but it does not imply hard coupling between the contained systems.
1010

11-
We focus on what really matters in most cases: user identity and permissions.
11+
The repository is organized into two top-level directories, each with a distinct purpose.
1212

13-
Have you ever stopped to look at a JWT token issued by Keycloak? How many of those claims do you actually use? Maybe I’m being ignorant or naive, but this project was born from the need to keep it simple — focusing only on what is essential.
13+
```text
14+
.
15+
├── .github/ # ci/cd workflows (pipelines)
16+
├── Applications/ # executable applications
17+
│ ├── Backend/ # main identity provider backend
18+
│ └── Proxy/ # optional gateway/proxy layer
19+
└── Packages/ # reusable sdk and contracts
20+
├── Federation.Sdk/
21+
└── Federation.Sdk.Contracts/
22+
```
1423

15-
Ideal for small to medium projects, startups, or teams that need a customizable identity solution without heavy overhead. Not intended to replace enterprise-grade providers in large-scale scenarios, but designed for teams focused on delivering value quickly with minimal complexity.
24+
## THE ARCHITECTURE BEHIND FEDERATION GATEWAY
1625

17-
And to make your life even easier, we provide a .NET SDK that's super simple to consume and integrate.
26+
Federation Gateway is built with clear boundaries between runtime services and reusable integration packages. The Backend is the core identity service, while SDK packages provide consumer-facing contracts and client utilities.
27+
28+
The platform is **multi-tenant by design**. Each tenant can have its own users, permissions, and identity boundaries, enabling isolated and predictable behavior across customers.
29+
30+
The focus is on practical identity needs in real-world projects: issue useful tokens, manage users and permissions, and keep the model simple instead of overloading integrations with unnecessary claims and complexity.
31+
32+
## PROXY (OPTIONAL)
33+
34+
The Proxy is optional. If you need to handle cross-cutting concerns like quality of service controls and rate limiting, you can deploy it as an edge layer in front of the Backend. For simpler scenarios, you can run only the Backend and consume it directly without the Proxy.
35+
36+
## PACKAGE INSTALLATION (EXAMPLES)
37+
38+
Install SDK packages in your .NET project:
39+
40+
```bash
41+
dotnet add package HttpsRichardy.Federation.Sdk
42+
dotnet add package HttpsRichardy.Federation.Sdk.Contracts
43+
```
44+
45+
## INTEGRATING WITH YOUR SERVICE
46+
47+
After installing the SDK, you can register Federation directly in your service container. This keeps authentication setup centralized and allows each environment to provide its own authority, realm, and client credentials through configuration.
48+
49+
```csharp
50+
services.AddFederation(options =>
51+
{
52+
options.Authority = settings.Federation.Authority; // e.g., https://api.hosted.com (without "/")
53+
options.Realm = settings.Federation.Realm; // e.g., "acme-corp"
54+
options.ClientId = settings.Federation.ClientId; // e.g., "client-id-generated"
55+
options.ClientSecret = settings.Federation.ClientSecret; // e.g., "secret-key-generated"
56+
});
57+
```
58+
59+
## DOCKER IMAGE
60+
61+
Federation Gateway is also distributed as a docker image, so you can run the service quickly without building the source code locally. If you prefer a rolling setup, use the `latest` tag. If you need predictability across environments, use a fixed version tag.
62+
63+
You can pull either:
64+
65+
```bash
66+
docker pull httpsrichardy/federation:latest
67+
docker pull httprichardy/federation:3.0.0
68+
```
69+
70+
To run the container, provide the required environment variables for database and administration bootstrap:
71+
72+
```bash
73+
docker run --name federation \
74+
-p 8080:8080 \
75+
-e Settings__Database__ConnectionString="mongodb://admin:admin@localhost2017/?authSource=admin" \
76+
-e Settings__Database__DatabaseName="federation" \
77+
-e Settings__Administration__Username="admin" \
78+
-e Settings__Administration__Password="admin" \
79+
httpsrichardy/federation:latest
80+
```
81+
82+
If needed, replace `httpsrichardy/federation:latest` with a fixed version tag for controlled deployments.

0 commit comments

Comments
 (0)