Skip to main content

backbone_auth (Better Auth)

Schema dedicato al layer di autenticazione gestito da Better Auth.

Better Auth e una libreria Node.js open source che viene wrappata in un microservizio Express dedicato (auth-service). Gestisce autenticazione e autorizzazione senza dipendere da provider esterni a pagamento.

La separazione in schema dedicato (backbone_auth) mantiene il layer credenziali/sessioni isolato dal layer di mapping e autorizzazioni platform (backbone_identity).

Responsabilita

backbone_auth     = credenziali, sessioni, account OAuth, verifiche
backbone_identity = mapping identita esterne -> applicazioni/tenant, ruoli, audit

backbone_auth e owned esclusivamente dall'auth-service. Nessun altro microservizio accede direttamente a questo schema.

Configurazione Better Auth

Better Auth viene configurato con:

  • useSnakeCase: true per allineare i nomi colonne al resto della backbone
  • table prefix auth_ per evitare conflitti con keyword riservate PostgreSQL (user, session)
  • schema backbone_auth tramite opzione database adapter

Tabelle core

auth_user

Utenti registrati. Source of truth delle credenziali.

ColonnaTipoNote
idtextPK, generato da Better Auth (nanoid)
nametextNome visualizzato
emailtextUnico
email_verifiedbooleanDefault false
imagetextURL avatar
created_attimestamptz
updated_attimestamptz

auth_session

Sessioni attive.

ColonnaTipoNote
idtextPK
expires_attimestamptz
tokentextUnico, token sessione
ip_addresstext
user_agenttext
user_idtextFK -> auth_user
created_attimestamptz
updated_attimestamptz

auth_account

Account collegati a provider OAuth o credenziali locali.

ColonnaTipoNote
idtextPK
account_idtextID presso il provider
provider_idtextEs. google, github, credential
user_idtextFK -> auth_user
access_tokentext
refresh_tokentext
id_tokentext
access_token_expires_attimestamptz
refresh_token_expires_attimestamptz
scopetext
passwordtextHash password per credenziali locali
created_attimestamptz
updated_attimestamptz

auth_verification

Token temporanei per verifica email, OTP e magic link.

ColonnaTipoNote
idtextPK
identifiertextEs. email o numero telefono
valuetextToken/hash
expires_attimestamptz
created_attimestamptz
updated_attimestamptz

Tabelle plugin organization

Abilitate tramite il plugin organization di Better Auth. Mappano il concetto di tenant/cliente multi-applicazione.

auth_organization

Organizzazioni (tenant/clienti).

ColonnaTipoNote
idtextPK
nametext
slugtextUnico, usato nei subdomain/routing
logotextURL logo
metadatatextJSON arbitrario
created_attimestamptz

auth_member

Membership utente/organizzazione.

ColonnaTipoNote
idtextPK
organization_idtextFK -> auth_organization
user_idtextFK -> auth_user
roletextDefault member; valori: owner, admin, member
created_attimestamptz

auth_invitation

Inviti a organizzazioni.

ColonnaTipoNote
idtextPK
organization_idtextFK -> auth_organization
emailtextDestinatario
roletextRuolo assegnato all'accettazione
statustextpending, accepted, cancelled
expires_attimestamptz
inviter_idtextFK -> auth_user

Relazione con backbone_identity

backbone_auth non sostituisce backbone_identity. I due layer cooperano:

autenticazione:   browser -> auth-service -> backbone_auth
auth-service emette token interno

autorizzazione: microservizio -> data-service -> backbone_identity
verifica ruoli/permessi applicativi su external_identity_id

Il collegamento tra i due layer avviene tramite backbone_identity.external_identities, che mappa backbone_auth.auth_user.id come provider_subject con provider_id = backbone_auth.

Tabelle non presenti (gestite da Better Auth)

Le seguenti responsabilita non richiedono tabelle aggiuntive perche gestite internamente da Better Auth o non necessarie con questo setup:

ResponsabilitaMotivo
Password reset tokensGestiti tramite auth_verification
Refresh token storageGestiti in auth_account
Rate limitingIn memoria o Redis, non su DB