Skip to content

Authentication: Diagrams

Diagrams illustrating Fusion's authentication architecture and flows.

Authentication Service Architecture

IAuth vs IAuthBackend

AspectIAuth (Client-Facing)IAuthBackend (Server-Only)
Exposed via RPCYesNo (IBackendService)
Session requiredYes (all queries)No

IAuth Commands

CommandDescription
SignOut(session)Sign out current session
EditUser(session, name)Edit current user
UpdatePresence(session)Update last-seen

IAuth Queries

QueryDescription
GetUser(session)Get current user
GetSessionInfo(session)Get session details
GetAuthInfo(session)Get auth info
IsSignOutForced(session)Check forced sign-out
GetUserSessions(session)Get all user's sessions

IAuthBackend Commands

CommandDescription
SignIn(session, user, identity)Authenticate session
SetupSession(session, ip, ua)Create/update session
SetOptions(session, options)Set session options

IAuthBackend Queries

QueryDescription
GetUser(shard, userId)Get any user by ID (no session required)

Sign-In Flow

Session Resolution Flow

Default Session Replacement

Session Lifecycle

Database Entity Relationships

Indexes on _Sessions:

  • (CreatedAt, IsSignOutForced)
  • (LastSeenAt, IsSignOutForced) - Used by DbSessionInfoTrimmer
  • (UserId, IsSignOutForced)
  • (IPAddress, IsSignOutForced)

Authentication State Sync

Presence Reporting

Server-side effect:

  • DbSessionInfo.LastSeenAt updated
  • Prevents session from being trimmed

Multi-Session Management

Sign Out OptionCodeEffect
Current session onlyAuth_SignOut(session: A)Only Session A signed out
Specific sessionAuth_SignOut(session: A, kickSessionHash: B.Hash)Session B signed out
All sessionsAuth_SignOut(session: A, kickAllUserSessions: true)Sessions A, B, C all signed out
Force sign outAuth_SignOut(session: A, force: true)Session A permanently invalidated (new session created)