For the complete documentation index, see llms.txt. This page is also available as Markdown.

eSignet Building Blocks

Connecting secure components for seamless identity verification.

esignet-service is composed of a small composition root, the external ThunderID engine it plugs into, and a set of MOSIP-specific modules underneath. The diagram below is the map — each piece is explained briefly underneath it, with a link through to the full detail in the Architecture Deep Dive for anything you need to go deeper on.

cmd/esignet (Composition Root)

main.go is where everything gets wired together at startup: it opens the Postgres and Redis connections, builds the client-management HTTP handler, and passes roughly twenty functional options into the ThunderID engine to plug in every MOSIP-specific piece below. See esignet-service (Backend) for the full startup sequence.

ThunderID Engine (External Module)

The generic, external engine esignet-service builds on. It supplies the flow runtime, token issuance, JWKS/JWT handling, consent orchestration, and the OIDC/OAuth HTTP endpoints themselves — the protocol machinery that every MOSIP-specific module below plugs into. See Architecture for how this fits into the bigger picture. Please refer the Thunder ID to explore it in details.

internal/engine — MOSIP Provider Implementations

The following six pieces are esignet-service's implementations of the ThunderID engine's provider interfaces — the part of the codebase that's actually MOSIP-specific.

  • actor_provider — bridges the engine's generic client concept to eSignet's own OAuth client model. See Client Management.

  • consent_provider — bridges the engine's authorization flow to eSignet's consent records, deciding when a user needs to be re-prompted for consent. See Consent Management.

  • flow_provider — loads and parses the declarative YAML flow definitions (flow-esignet.yaml, otp-flow.yaml) that drive every login and consent screen. See Authentication Flow Engine.

  • idsystem_factory — selects which identity backend — MOSIP IDA, Sunbird RC, or the mock provider — handles authentication at startup, based on a single environment variable. See Pluggable Identity-System Providers.

  • executors — the custom flow-step logic (like the eSignet OTP executor) invoked as a flow moves from node to node. See Authentication Flow Engine.

  • design / i18n / OU / resource / attestation / captcha providers — the remaining engine interfaces: screen layout, translations, organizational-unit context, static assets, device attestation, and CAPTCHA validation. See the Module Breakdown table for where each lives in the codebase.

Domain Services

  • clientmgmt — registers, updates, and looks up OAuth/OIDC relying-party clients, backed by Postgres. See Client Management for the full endpoint list.

  • consentmgmt — captures and stores user consent decisions, keeping an append-only audit trail alongside the current decision. See Consent Management.

Shared Infrastructure

  • security — enforces JWT scope checks and request-time validation on the client-management API surface, backed by a polling JWKS cache. See Security.

  • httpmiddleware — applies access logging and correlation IDs to every request that comes through esignet-service.

  • runtimestores — the shared runtime store (in-memory or Redis) backing the client cache, the flow-definition cache, and the engine's own session and flow state. See Configuration & Runtime Store.

Last updated

Was this helpful?