Skip to content

Open source

We build in the open — and use it ourselves

Components that almost every system needs, we build once and in the open. Currently two projects: CentralAuth for authentication and SancMeld for sanctions-list screening.

CentralAuth

Proof of concept

One authorization server and one BFF for all projects

Every new project usually writes its own login, session management and API gateway from scratch. CentralAuth turns that around: a new project simply registers, and its frontends and backends are secured from day one.

New project

Three steps instead of a week of work

Login, session refresh, logout, permission checks, an API gateway — the same work in every new project. Here it is replaced by registering the application.

  1. Register your application

    A code, a name and the internal address of the service. The /bff/{code} path is created automatically.

  2. Keep the backend hidden

    The service runs on the internal network with no exposed port. From the outside, the only way in is through the BFF.

  3. The frontend calls through the BFF

    Calls go to /bff/{code}/… with the login cookie. Not a single line of authentication code is added to your project.

Identity

Authorization server

One place where login is handled for all applications.

  • OpenID Connect and OAuth 2.0 built on OpenIddict
  • Authorization Code with mandatory PKCE and refresh tokens
  • E-mail and password via ASP.NET Identity, plus external login via Google
  • API keys for service-to-service communication without a user
Security

Central BFF

The token never reaches the browser. Ever.

  • The browser holds only an HttpOnly cookie — there is nothing in localStorage to steal
  • The proxy exchanges the session for a short-lived JWT only on the way to the API
  • Requests are forwarded one to one — including bodies, headers and status codes
  • During development and debugging you see the real API calls, no hunting for errors across layers
  • Internal APIs do not need any port exposed to the internet at all
Onboarding

Application registration

A new application is one record, not another piece of configuration.

  • Registering an application automatically creates the /bff/{code} path
  • Paths live in the database, not in a config file — changes without deployments
  • One project can have multiple frontends and backend services
  • Continuous availability checks of registered services
Control

Sessions and permissions

Revoked access takes effect immediately, not when a token expires.

  • Sessions live on the server and can be invalidated at any time
  • Validity is checked on every request, not just at login
  • Role-based permissions at the level of individual paths
  • Admin interface for applications, paths and users

How it works

The token never reaches the browser

The frontend talks exclusively to the BFF and identifies itself with a signed HttpOnly cookie. On every request, the BFF verifies that the session is still valid, and only then issues a short-lived token for the target API. If an attacker manages to run foreign script in your application, there is nothing to steal — and revoked access takes effect immediately, not once a token expires.

At the same time, the BFF is a transparent proxy — it forwards requests exactly as the frontend sent them. During development and debugging you therefore see the real API calls, and when hunting a bug there is no need to reconstruct what actually happened between the layers. The whole solution is meant for projects where a custom BFF as another application layer does not make sense — instead of every project building and operating its own, one central BFF takes its place.

Browser

HttpOnly cookie

BFF proxy

verifies the session, issues a JWT

Protected API

Bearer token

Second project

SancMeld

Screening against the EU, UN and OFAC sanctions lists

A .NET solution that uses a set of scheduled cron jobs to continuously download the available sanctions lists and search them for matches. It includes a prediction mechanism built on ML.NET that helps assess how relevant a found match is.

.NETML.NETEU · UN · OFAC
  • Cron jobs continuously download and process the EU, UN and OFAC lists
  • Match search always runs against the current version of the lists
  • A match-scoring prediction mechanism built on ML.NET
  • A single .NET solution — deployable as a service with you or with us

Working with us

Three ways to run our solutions

The code is open, so you can do everything yourself. If you want, we can help — from support all the way to a fully managed service.

Paid support

You run the solution yourself, with guaranteed help from us — consultations, troubleshooting and assistance with upgrades.

Deployment and management at your side

We deploy the whole solution to your server or your cloud and take over its operations — updates, monitoring and security patches.

A tenant on the CPD instance

Prefer not to run anything? Purchase a tenant on our instance and use the solution as a service.

Why in the open

An authorization server is exactly the kind of component nobody wants to write themselves, yet everyone needs to be able to look under its hood with confidence. Closed code does not offer that trust.

You can deploy and operate the solution entirely on your own — or pick one of the collaboration options above.

  • No vendor lock-in

    Built on the OpenID Connect and OAuth 2.0 standards. If you ever decide to leave, you leave with a standard protocol, not with our convention.

  • Auditable

    You can walk through the entire authorization flow line by line — including your own security audits.

  • Built on proven components

    OpenIddict and ASP.NET Identity. We did not reinvent cryptography or protocols — we combined them into a whole that can be deployed in one go.

  • Proof of concept for now

    The authorization server, the BFF proxy, application registration and administration all work. We are still polishing the solution for production deployment and will not claim otherwise.