Blackwall · www.blackwall.cx

Nobody has a password to steal.

An OAuth 2.1 and OpenID Connect authorisation server where every human signs in with a passkey — and every action leaves a trail that can prove it was not altered.

  • 0Passwords, ever
  • 1Binary to deploy
  • OIDCPlus SAML & SCIM
  • 100%Audited mutations
Discover

One identity surface for your staff, your customers and everything you ship.

Blackwall is an authentication service for organisations that want a single, auditable, passwordless front door. It speaks the standards your applications already expect — authorisation code with mandatory PKCE, ID tokens, JWKS, UserInfo, introspection, revocation — and authenticates every user with WebAuthn.

Passwords are not merely discouraged. They cannot be enabled. There is no reset flow to socially engineer, no credential-stuffing surface, and no shared secret sitting in somebody's notes app.

The posture, stated plainly.

Four decisions that shape everything else about how Blackwall behaves in production.

  1. I

    Passkeys only

    Every assertion requires both User Present and User Verification. PIN-less authenticators are rejected, and a regressed sign counter is treated as a cloned credential and refused outright.

  2. II

    One process, one database

    A single statically linked Go binary over PostgreSQL. No service mesh, no scheduler tier, no daemon zoo — background work runs in goroutines beside the HTTP server. The schema migrates itself on start-up.

  3. III

    Least privilege, then approval

    Three admin roles, per-request scope computed from organisation membership, and an approval workflow for sensitive mutations. An out-of-scope URL returns 403 rather than 404, so guessing is a deliberate signal.

  4. IV

    Provable history

    The audit log is SHA-256 chained under a transaction-scoped lock, so concurrent writes serialise and tampering is detectable. Exports finish with an HMAC-signed manifest line.

What you get.

An identity provider, an administration console, a licensing service and a secure-sharing tool — all in the same deployment, all under the same audit trail.

02

Authentication

Passkeys, verified server-side.

CBOR and COSE attestation parsed and checked in-process, ES256 and RS256 supported, platform authenticators, roaming security keys and synced passkeys all welcome.

  • One-time enrolment links, hashed at rest
  • Sign-counter regression rejected
  • No password path exists to fall back to
03

Claims

Say what your applications need to hear.

Custom OIDC claims merged at four layers — organisation, project, user, and user within a project — landing in every ID token and UserInfo response without a bespoke integration.

  • Typed values: numbers, booleans, JSON, strings
  • Reserved claim names blocked at write and again at signing
  • Provenance shows which layer supplied each value
04

Administration

A console that assumes people make mistakes.

Organisations, projects, privilege ladders and per-user assignments, with super-admin, operator and auditor roles — and an approval workflow standing between an operator and anything sensitive.

  • Status changes, credential deletions and client settings gated
  • Request, review and decision end-to-end audited
  • Scope debugger, error-trace decoder, in-app reference
05

Licensing

Sell software and keep control of it.

Ed25519-signed licence envelopes bound to an exact hostname, issued to a person or a business, carrying feature and instance claims — with online verification, revocation and key rotation built in.

  • Public-key registry published for offline checking
  • Renewal reminders at 30, 14, 7, 2 and 1 days
  • Exact hostnames instead of ambiguous wildcards
06

CryptBin

Share a secret without handing it over.

End-to-end encrypted blob storage: payloads are encrypted in the browser with AES-256-GCM, and the server only ever holds ciphertext and a wrapped key it cannot use alone.

  • XChaCha20-Poly1305 key wrapping, bound to the blob ID
  • Optional per-item passkey binding
  • No more secrets pasted into chat threads
07

Federation

For the systems that cannot speak OIDC.

A SAML 2.0 identity provider for legacy applications, SCIM 2.0 provisioning from your HRIS, and outbound webhooks with exponential backoff for everything that needs to react.

  • Workday, Okta and Entra ID as provisioning sources
  • Event-driven integration without polling
  • One user record behind all of it
08

Operations

Runs quietly, tells you everything.

Prometheus-compatible metrics, optional outbound push of every audit event, server-backed sessions, scheduled maintenance jobs and documented backup and recovery.

  • Tamper-evident chain checkpoints
  • Signed CSV audit exports
  • Vulnerability-scan provenance shown to admins, findings withheld
09

Automation

Configure it the way you configure everything else.

A JSON admin API with bearer-token authentication, a Terraform provider, and CI/CD patterns for keeping identity configuration in the same repository as the applications that depend on it.

  • Declarative upsert and delete
  • Per-project feature flags
  • Branding and custom domains per organisation
10

Self-service

A portal, so support does not become the bottleneck.

End users manage their own passkeys — add a second device, retire a lost one, see what is enrolled — without an administrator touching a credential or an approval queue filling up with routine work.

  • Enrolment by one-time link
  • Authentication sandbox for developers testing a flow
  • Worked integrations for Node, Python, PHP, Go and SPAs

Standards posture, without the hand-waving

Blackwall documents what it implements today, what the known gaps are, and how to run the OIDC conformance suite against your own deployment. We would rather tell you where the edges are than let you discover them during an integration.

What a sign-in actually looks like.

The same flow your framework's OIDC client already speaks — with the password step replaced by something that cannot be phished.

  1. I

    Enrol

    The user follows a one-time link and registers a passkey. The database stores a hash of the token, never the token itself.

  2. II

    Authorise

    Your application redirects to /oauth/authorize with a PKCE challenge. Blackwall asks for the passkey; the authenticator asks for the finger, face or PIN.

  3. III

    Exchange

    The code is exchanged at /oauth/token for an access token and an ID token — with your custom claims already merged in from all four layers.

  4. IV

    Account for it

    Every step lands in the chained audit log. Months later, an auditor can export it, verify the chain and see exactly who did what and who approved it.

Consider Blackwall when…

01You want passwords gone, not merely behind a second factor.

02Your auditors want proof the log was not edited afterwards.

03You ship licensed software and need signed, revocable entitlements.

04You are paying per-user rates for an identity platform you barely use.

05You need a SAML shim for one stubborn legacy application.

06You would rather run one binary than operate a fleet of services.

Questions worth asking.

What happens when someone loses their phone?

They authenticate with another enrolled passkey and retire the lost one from the portal themselves. Where no second credential exists, an administrator issues a fresh one-time enrolment link — a capability that is itself gated and audited, rather than a quiet reset.

Do I have to rewrite my applications?

No. Blackwall speaks standard OAuth 2.1 and OpenID Connect, so most frameworks need a client ID, a secret and a discovery URL. The manual carries worked examples for Node with Express, Python with Flask, PHP, Go and a vanilla-JavaScript single-page app, plus guidance on choosing between server-side, SPA and backend-for-frontend patterns.

How is it deployed?

A single Go binary, or the supplied container image, against PostgreSQL 14 or later. TLS terminates at a reverse proxy you already run; reference nginx and Apache configurations and a systemd unit are included. An empty database is fine — the baseline schema installs itself on first start.

What makes the audit log trustworthy?

Entries are SHA-256 chained, each committing to the one before it, written under a transaction-scoped advisory lock so concurrent writes serialise correctly. Alter a row and the chain no longer verifies. CSV exports end with an HMAC-signed manifest line, and periodic checkpoints give you fixed points to verify against.

Can it act as the licence server for our own product?

Yes — that is what project licences are for. Licences are Ed25519-signed envelopes bound to an exact hostname and carrying your feature and instance claims. There is a normative verification guide with PHP, Go, Rust and Java examples, and it is emphatic on one point: decoding a licence is never the same as verifying it.

Also from Alchamentary.

Independent products, built because they should exist.

01

4ensics Leviathan

Drop a file. See everything.

A complete binary analysis, reverse-engineering and digital-forensics workbench, running inside a browser tab with your artefacts kept local.

See Leviathan
02

Fury

Post-quantum file encryption.

Hybrid lattice key agreement, identities that cannot be written unprotected, and files that stay private long after today's cryptography stops being enough.

See Fury

Retire the last password.

Tell us about your applications, your users and the audit obligations you are working to — we will tell you honestly whether Blackwall is the right fit.