This section documents the B Brands IdP — the centralized authentication
platform exposed through
auth.bbrands.io. It is the single place where the
holding proves who a user is and whether they are enabled for a given
platform (ERP, CRM, analytics, future SaaS, partners).What this is
The B Brands IdP is the holding’s standard identity provider. Any platform — existing or future — authenticates its users via OAuth 2.1 / OpenID Connect against B Brands, instead of maintaining its own user database. The protocol is handled by a managed OAuth 2.1 / OIDC engine, wrapped entirely behind the per-environmentauth.* origin. Clients never see the
underlying engine: client registration, identity lifecycle, audit and every
public endpoint live in the B Brands identity layer. The engine is a
replaceable implementation detail.
The golden rule: the IdP authenticates, it does not authorize
This is the single most important concept for every team integrating with the IdP. Keep it in mind while reading the rest of the section.What the IdP does
Proves a user’s identity (
sub, email, profile), delivers their
business-account context (https://bbrands.io/profile: primary
account and its external system id) and whether they are enabled for a
platform (active / suspended / revoked).What the IdP does NOT do
It does not manage application permissions. Each client application decides
what a user can do inside it. There is no central permission catalogue.
1
A user signs into a client app via B Brands
The IdP only authenticates. The client app authorizes its own users with its
own roles/groups.
2
A client app consumes the B Brands APIs
B Brands protects its own data with the existing internal RBAC. The client
acts with an internal B Brands JWT obtained through the
token exchange (user context) or with an existing
API key (machine-to-machine, no user).
Two token formats coexist
The two never mix: ES256 for identity towards clients, HS256 for consuming
the B Brands APIs. See Security for the full token model.
Who should read what
Integrators (new platform)
Configure your OAuth client, discovery, redirect URIs and (optionally) the
token exchange to call B Brands APIs.
Backend / architects
Component layers, the engine facade, ADRs and the access-token hook.
Backend / integrators
The OAuth / OIDC endpoint contract: discovery, authorize, token, userinfo,
revoke.
Security / compliance
Token model, secret management, threat model, revocation levels and audit.
Data / lifecycle
The identity entities, enablement lifecycle and the kill switch.
Frontend teams
The separate end-user social login through the managed engine.
Environments
The IdP runs in multiple environments. Each has its own isolated engine, its own issuer and its own registered OAuth clients. A token minted in one environment is never valid in another, because clients validate theiss of their own
environment.
Every OAuth/OIDC surface — discovery, JWKS, authorize, token, userinfo, revoke
and the interactive consent/login UI — lives under the same per-environment
auth.* origin. That origin is the canonical issuer embedded in every issued
token.
A single user-facing identity origin, on purpose:
auth.* is the
canonical issuer and serves every protocol endpoint plus the consent UI
(same shape as accounts.google.com). The api.* domain hosts the
underlying implementation and the B Brands business APIs, but it is not
the advertised issuer — clients only ever configure auth.*. See
Architecture for the decision record.Client naming convention
OAuth client identifiers follow the<platform>-<environment> pattern, e.g.
erp-prod, erp-cert, erp-dev. Always register a distinct client per
environment.