Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 105 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

eSignet

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Principles

Core principles that define eSignet.

eSignet is designed with the architectural principles mentioned below. These architecture principles are core to developing the system's features and greatly influence how and why specific software design patterns are used.

Data Privacy

eSignet prioritizes user privacy by minimizing data exposure and ensuring secure interactions:

  • No PII Data Storage by eSignet: eSignet does not store any personally identifiable information (PII); sensitive data is processed transiently for authentication and never retained.

  • Privacy-Enabled Token (PSUT): Instead of sharing user IDs, eSignet issues a unique Partner Specific User Token (PSUT) for each user-relying party pair.

  • Protection of Sensitive Data: Sensitive information is never stored or logged in clear text.

  • User Controlled Consent: Users have full control over what data is shared with relying parties.

No Vendor Lock-in

eSignet is built to be vendor-neutral and open-source, promoting maximum flexibility, interoperability, and independence:

  • Open Standards Across the Stack eSignet adheres to open standards across its entire architecture, enabling seamless integration with a wide range of identity systems and infrastructures.

  • No Dependence on Proprietary Solutions Organizations are free to use their preferred biometric devices, software components, and infrastructure without being tied to a specific vendor or ecosystem.

  • Open Source Foundation As an open-source product, eSignet provides full transparency and avoids proprietary lock-in, allowing adopters to customize, extend, and audit the solution based on their requirements.

Commodity Computing

eSignet is optimized for cost-efficiency and scalability:

  • Containerized Backend: All eSignet backend services run as Docker containers, eliminating dependencies on specialized hardware or specific cloud providers.

  • Multi-Platform Support: It can be deployed on any general-purpose virtual machine (VM) that supports Docker.

  • Avoids Vendor Lock-in: Organizations are free to use their existing cloud or on-premise infrastructure.

Secure By Design

Security is a core principle of eSignet, ensuring end-to-end protection:

  • Trusted Integrations: eSignet only integrates with verified and trusted applications.

  • Fraud Prevention: Authentication is tied to specific transactions, reducing the risk of unauthorized access.

  • Centralized Key Management: A robust key management system ensures secure cryptographic operations.

  • API Security:

All state-changing APIs are protected with OAuth 2.0, enforcing authenticated and authorized access.

Roadmap and Releases

Explore the eSignet Roadmap & Releases to stay updated on key milestones, new features, and major updates.

Technology

Explore the tools, components, and architecture powering eSignet.

Please refer to the below sections to build, integrate, and enhance solutions with eSignet using comprehensive guides, tools, and resources:

  • Technology Stack – Learn about the technologies used in eSignet, including services, storage solutions, deployment tools, and testing frameworks.

  • Components – eSignet – Understand eSignet’s core components, functions, and integration methods.

  • Components - Signup Portal – Seamlessly register and verify identities with the Signup Portal’s robust components and secure eKYC integration.

  • – Refer here for all the APIs used by eSignet.

License

Empowering users through transparent licensing.

The documentation is licensed under a Creative Commons Attribution 4.0 International License.

🔗 eSignet's Core Repositories:

All eSignet's repositories are licensed under the terms of .

⚠️ Trademark Notice:

All trademarks are the property of their respective holders. Other products and company names mentioned may be trademarks and/or service marks of their respective owners.

All the data modification APIs (Client management end points) are protected using
OAuth 2.0
, ensuring secure access control.

API Reference
core
Mozilla Public License 2.0
here
CC license Image

Standards & Security

Building on the most trusted security protocols.

eSignet is built on industry-leading security standards, ensuring robust privacy and data protection. It implements OpenID Connect Core 1.0 and OAuth 2.0, leveraging the most secure and trusted authentication flows to safeguard user identities.

1. Security

  • Biometric Integration via SBI eSignet integrates with the Secure Biometric Interface (SBI) to support a wide range of biometric service providers. Please refer the links below for the SBI library to enable the biometric auth with eSignet

    • - View the list of compatible biometric devices.

  • HSM Integration with PKCS #11 eSignet supports Hardware Security Module (HSM) integration using PKCS #11 for the secure storage and management of signing keys.

2. Interoperability

  • Verifiable Credentials & Wallet Integration eSignet adopts OpenID standards to support verifiable credentials and wallet-based identity verification, enabling seamless cross-platform interoperability.

  • Identity Assurance (Introduced in v1.5.0) From version v1.5.0, eSignet includes support for under OpenID Connect, allowing retrieval of verified user claims and associated metadata.

  • well-knowns eSignet implements well-known to publish the URI for metadata discovery. Below are the supporting standardized .well-known endpoints for dynamic service configuration and discovery.

2. Supported Standards and RFCs

eSignet provides a limited implementation of the OpenID protocol, supporting the following RFCs and standards:

a. OAuth 2.0 Standards:

  • - Authorization code flow support

  • - Authorization Framework: Bearer Token Usage

  • - JWT profile for client authentication

  • - PKCE security extension

b. Token and Discovery Standards:

  • - JSON Web Signature

  • - JSON Web Keys

  • - JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens

  • - ID token and access token as JWT

c. Identity Proofing and security:

d. FAPI 2.0 Security Profile:

eSignet adopts key OpenID requirements. This combination mitigates authorization request tampering, authorization code interception, bearer token replay, and authorization server mix-up attacks, significantly strengthening OAuth 2.0 security.

  • - Pushed Authorization Request (PAR)

  • - Demonstrate Proof of Possession (Dpop)

  • - Authorization Server issuer Metadata

3. Supported Authentication Flows

As eSignet incorporates OpenID Connect, a wide range of client libraries are available for seamless integration. Therefore, it is recommended to avoid creating custom code for the integration process.

eSignet implements and supports only the flows mentioned below:

Note: eSignet supports confidential clients only, adhering to the principle of security by design.

4. Security Enhancements

  • Authorization Code Flow – Exchanges an authorization code for a token, requiring client authentication.

  • Private-key-jwt - Our supported client authentication method is private-key-jwt only which ensures that the token is given to a legitimate client.

  • PKCE - We also support the (Proof Key for Code Exchange) security extension for exchanging an authorization code for a token, which guarantees that the authorization code was obtained by the same client application performing the code exchange.

Note: eSignet currently supports the S256 challenge method in its PKCE implementation.

5. eSignet as OAuth 2.0 server

eSignet’s OAuth 2.0 implementation is a lightweight solution designed specifically for OIDC authentication flows. It does not function as a full-fledged authorization server but provides the essential capabilities required for identity verification and kyc. Additionally, eSignet:

  • Does not support role-based access control - As it is designed for integration with national-level identity solutions, where predefined roles are not necessary for residents.


eSignet

A Modern and Inclusive Digital Identity Authentication Solution

Overview

Digital identity is rapidly becoming the standard for citizen identificatio, Whether accessing services on government platforms or private service portals, user authentication is now a critical requirement. To ensure secure, private, and inclusive access, authentication mechanisms must adhere to established standards that guarantee data protection and build user trust.

Where does eSignet fit in?

eSignet plays a critical role by providing a secure, standards-compliant digital identity solution that empowers both users and service providers. It enables:

  • Trusted identity verification across platforms.

  • Flexible login and authentication methods tailored to various assurance levels.

  • Inclusive access designed to serve diverse user groups and device capabilities.

  • Consent-driven data and profile sharing, ensuring transparency and user control.

eSignet ensures that digital interactions are not only seamless but also secure, private, and user-centric. Built on trusted protocols and designed with a privacy-first approach, eSignet empowers both users and service providers with confidence and control.

eSignet comprises of 2 specific modules/parts:

What is eSignet Authentication?

is a powerful, open-source digital identity authentication module that enables secure and standardised access to online services. It is developed by MOSIP and built by implementing specific OpenID Connect (OIDC) RFCs to provide high assurance.

It is designed to be independent and be used as a standalone authentication module and can be easily integrated with any identity system or repository that supports authentication and attribute retrieval. While it includes reference integrations with MOSIP, its architecture is flexible and open enough to be adopted for a wide range of digital services ecosystems.

Whether you're building a citizen portal, a financial application, or any service that requires identity verification, eSignet can serve as your trusted, modular identity layer.

What is Signup?

The Module is a self-contained, independent component that enables individuals to create and manage their digital identity profiles designed for seamless integration with eSignet auth module.

Beyond profile creation, the module also offers support for identity verification capabilities, including support for , ensuring that user identities can be reliably validated during signup. With a focus on inclusivity, low-barrier entry, and progressive trust building, it can be used to extend digital identity to under-served or unregistered populations.

Key Features of eSignet

  • Login with Trusted ID Enables users to authenticate using a secure identity issued by a government authority or a trusted provider.

  • Inclusive Support for Multiple Authentication Factors Accommodates a including biometrics, one-time passwords (OTP), and wallet-based authentication.

  • Frictionless Addition of New Authentication Factors Architected to seamlessly integrate emerging authentication technologies without requiring major system modifications.

What Differentiates eSignet

1. Enhancing Authentication Methods Through Secure Standards

  • Standards-Based Architecture utilizes , allowing seamless integration via widely supported libraries.

  • Scalable for Country-Wide Implementation Designed to deliver secure authentication and KYC verification at national scale, ensuring high reliability and performance.

  • Secure Biometric Integration Incorporates the to enable secure biometric data collection for identity verification.

2. User-Centric Design

  • Single Identity Credential Enables users to access integrated public and private sector services using a unified digital identity.

  • Mandatory Consent Enforcement Ensures that all data access is governed by an explicit, user-centric consent flow.

  • Support for Diverse Authentication Methods Accommodates various verification approaches to meet individual preferences and improve usability and liveness detection.

3. Accelerated Digital Transformation

  • Fast and Secure Digital Verification Facilitates rapid user verification across multiple digital services.

  • Assurance Parity with Registration Maintains consistent verification quality using the same methods employed during initial user onboarding (OTP, biometrics, cryptographic keys).

  • Government Enablement for e-KYC Services Empowers governments to offer digital identity verification and e-KYC services, fostering broader access to financial and digital services.

Inclusivity at Its Core

eSignet is engineered to ensure inclusive access to digital identity verification, supporting multiple verification models and modalities to meet the varied needs of users and the devices they use.

Verification Models

  • Assisted Verification and Data Collection Enables identity verification with the assistance of an operator or at a physical kiosk.

  • Self-Identification for Online Services Allows users to independently verify their identity through remote digital channels.

  • OTP-Based Authentication (Feature Phone Users) Offers SMS-based OTP login for users with basic mobile devices.

  • Wallet-Based Facial Authentication (Smartphone Users) Enables face recognition authentication via digital wallets on smartphones.

  • Biometric Authentication (Non-Phone Users) Supports biometric verification for users without mobile access, via assisted modes or kiosks.

Who is eSignet for?

  • Government Agencies Offers a secure, standards-based identity verification layer for transforming existing IDs into interoperable digital identities.

  • Service Providers Enables efficient service delivery through secure identity verification, eKYC, and consent-based data access across sectors such as banking, telecommunications, and insurance.

  • Citizens and Residents Empowers individuals to prove their identity securely and conveniently while preserving privacy across a broad range of digital services.

Potential Use Cases

  • Healthcare: Patients use OTP or biometrics to access health portals securely, ensuring inclusive access to medical services.

  • Education: Universities leverage face authentication for secure access to exams or hostel services, enhancing accessibility.

  • Social Welfare Programmes: Enables precise distribution of benefits to verified and eligible recipients.

  • Taxation:

The use cases listed above are illustrative and not exhaustive, eSignet can be adapted to support a wide range of additional applications across both public and private sectors.

Refer below to know more about eSignet principles, standards and tech:

  • .

  • .

Health Portal

Explore eSignet Authentication: Your Interactive Health Portal Experience.

Experience eSignet in Action Through Our Demo Health Portal

Explore eSignet in action through a Health Services Portal designed to mimic the role of a relying party. This portal allows you to experience how eSignet seamlessly integrates into any service application that requires secure resident authentication.

Hosted on the MOSIP Collab Sandbox, this portal gives you an interactive space to try out eSignet as an actual user would. With just your National ID (UIN), you can explore:

Audit Plugin

The audit plugin interface provides two methods to audit any action in eSignet. An instance of this audit plugin is injected into all the services of eSignet, and almost all the events are audited using this plugin.

For eSignet Audit Interface refer to the

Test

Experience the Signup Module in Action

Explore the power and flexibility of the Signup module through an interactive, hands-on environment.

Test the Signup Flow with the Demo Health Portal

Community

Join the eSignet community!

eSignet is a product of the combined efforts of multiple stakeholders. Community contributions form the project's backbone, driving its growth and stability.

Ways the community contributes:

  • Direct code contributions.

API

Please refer for Signup module API documentation.

OTP authentication

  • Biometric authentication

  • INJI Wallet authentication

  • Real MOSIP ID or mock ID — both work. In just a few clicks, you get a secure, smooth, and personalized login journey.

    Use this demo portal as your hands-on playground to understand eSignet’s multi-modal capabilities and experience how easily it fits into service portals across sectors — health, education, social welfare, or any platform that needs trusted resident authentication.

    To help you experience how the Signup module works in real-world scenarios, we’ve integrated it with a demo Health Portal that mimics the role of a relying party. This allows you to walk through complete end-user signup flows exactly as they would occur in a live system—without requiring any real-world integration.

    Whether you're creating a new profile, testing dynamic signup forms, trying the video eKYC flow, or validating password reset journeys, the demo Health Portal offers a seamless sandbox environment to try it all.

    Explore, Integrate, and Experiment

    This test section enables you to:

    • Experience end-user signup journeys

    • Validate flows using mock or real data

    • Experiment with form configurations and developer tools

    • Understand integration points before going live

    Dive in and explore how the Signup module performs across different scenarios—both from an end-user and developer perspective.

    Design and architecture reviews.
  • Bug identification and fixes.

  • Technology evaluation support.

  • UI/UX design improvements.

  • Documentation.

  • How do I contribute?

    For code contributions, refer here.

    To engage with us on our community forum and connect with fellow contributors visit here.

    OpenID Connect Core 1.0

  • Open ID Connect Discovery 1.0

  • OAuth 2.0 RFC 8414 - Authorization Server Metadata

  • RFC 5785 - Followed for both openid and oauth well-knowns

  • Name

    URL Paths

    OpenID Configuration

    /.well-known/openid-configuration

    Jwks Json

    /.well-known/jwks.json

    Authorization Server

    /.well-known/oauth-authorization-server

    Standards

    Flow

    Client Authentication

    OAuth 2.0

    Authorization Code with PKCE

    private-key-jwt

    OIDC

    Authorization Code with PKCE

    private-key-jwt

    Identity Assurance 1.0

    Authorization Code with PKCE

    private-key-jwt

    React SBI Library
    JS SBI Library
    Supported Devices
    Identity Assurance
    OAuth 2.0 RFC 6749
    OAuth 2.0 RFC 6750
    OAuth 2.0 RFC 7523
    OAuth 2.0 RFC 7636
    RFC 7515
    RFC 7517
    RFC-9068
    RFC 7519
    Identity Assurance 1.0
    IEEE SA P3167 SBI 2.0
    FAPI 2.0 security profile
    RFC-9126
    RFC-9449
    RFC-9207
    PKCE
    Integration with Multiple Registries Provides the capability to connect with various identity registries to facilitate comprehensive user verification.
  • Simple Integration with Relying Parties (Service Providers) Streamlines the onboarding process for service providers requiring robust identity verification and facilitate integration with eSignet.

  • User Consent Management Incorporates a built-in mechanism to obtain explicit user consent for data access and usage.

  • Protection Against Unwanted Profiling Safeguards personal data by preventing unauthorized tracking or profiling of users.

  • Multiple Assurance Levels Supports varying levels of identity assurance, depending on the authentication method employed.

  • Digital Wallet Integration Enables secure, device-based authentication through integration with digital wallets.

  • Verified Claims Support: eSignet now includes verified claims in its identity response, enabling relying parties to consume high-assurance user attributes.

  • KYC-Verified Signup: eSignet’s Signup module allows user registration with Video eKYC, enabling identities to be onboarded with verified claims from the start.

  • FAPI 2.0 Compliance: eSignet now complies with the FAPI 2.0 Security Profile, offering higher security and improved interoperability.

  • Advanced Security Features Supports secure OpenID Connect options such as the authorization code flow and includes enhanced fraud prevention measures.
    Credential Security
    Ensures that user authentication is handled exclusively on the eSignet platform, preventing unauthorized data sharing with third parties unless consented by the user.
    Effortless Integration for Service Providers Adheres to open standards, significantly reducing time-to-market for deploying identity services.
  • Bridging the Digital Divide Offers flexible verification modes to cater to users across the digital access spectrum.

  • Developers and System Integrators Provides a comprehensive set of tools and standards to enable seamless integration of digital ID authentication and eKYC functionalities.
    Facilitates simplified tax filing and accurate taxpayer identification.
  • Voting Systems: Ensures secure and reliable voter authentication during elections.

  • Banking: Supports secure customer onboarding and transaction verification.

  • Insurance: Verified KYC data with high assurance levels enables faster, compliant onboarding, promoting financial inclusion.

  • Border Control: Enhances national security by verifying the identity of travelers and supporting secure cross-border movement.

  • eSignet Authentication
    Signup
    eSignet authentication
    Signup
    eKYC Verification
    variety of authentication methods
    OpenID Connect flows built on the OAuth 2.0 framework
    Secure Biometric Interface (SBI)
    Verification Modalities
    Explore eSignet’s principles of privacy, security, and flexibility
    Explore eSignet’s standards and secure authentication flows
    Explore the technology leveraged to design eSignet.
    link
    here

    Deploy

    Effortlessly deploy and configure eSignet with comprehensive guides, architecture insights, and mock environments.

    Effortlessly deploy and configure eSignet with comprehensive guides, architecture insights, and mock environments.

    The eSignet solution is designed to be:

    Easily deployed and tested locally using a Docker Compose–based setup for each module, allowing services to be brought up seamlessly on your machine.

    Deployed on-premise, with full flexibility to configure eSignet as per your organization’s use cases and requirements.

    The latest stable codebase is available under the master branch of the eSignet repository. All feature development or bug fixes are typically carried out on dedicated feature or development branches.

    Note: For deployment and testing, it is recommended to use either the master branch or the official released tags.

    ACR

    What is ACR?

    ACR, which stands for Authentication Context Class Reference, is a parameter used in authentication and identity systems to define the context or level of assurance associated with an authentication event.

    Why ACR Matters

    ACR values convey how a user was authenticated and the strength of that authentication, enabling relying parties to assess the trustworthiness of the authentication event.

    Usage:

    • ACR values are typically defined by identity providers and relying parties to communicate the level of trust and security associated with an authentication event.

    • These values can vary between systems but are often used to indicate different levels of assurance.

    • The assurance level is shared with the relying party as one of the claims in the ID token.

    Note: The specific meaning and usage of ACR values may vary depending on the context and the identity system in use.

    Relying parties can make access control decisions based on the ACR values provided.

    Supported ACRs

    eSignet currently supports the below ACR values:

    • mosip:idp:acr:generated-code For OTP authentication.

    • mosip:idp:acr:biometrics For biometric authentication use a MOSIP SBI 2.0-compliant device.

    • mosip:idp:acr:linked-wallet For wallet-based authentication, which requires the wallet to be bound to the server. Thereafter, the binding key could be used to sign the JWT with the server-signed certificate in the header as an authentication factor.

    Note: Wallet binding is a separate process where the RSA public key and the individual ID are shared with the server, and the server then returns the signed certificate to the wallet.

    • mosip:idp:acr:password For password-based authentication.

    • mosip:idp:acr:knowledge For Knowledge Based identification(KBI), demographic data based identity authentication.

    Note:

    • acr_values request parameter in the /authorize request takes the above values as a space-separated list in any combination.

    • Wallet binding is a separate process where the RSA public key and the individual ID are shared with the server, and the server then returns the signed certificate to the wallet.

    Roadmap

    Explore eSignet roadmap for key milestones, objectives, and highlights every year.

    Mock Relying Party

    This guide helps in setting up the mock OIDC-relying party portal. This portal uses the authorization code flow with private key JWT client authentication to fetch the user profile.

    The mock relying party portal is built with reactJS. This consists of the below two components:

    1. mock-relying-party-ui

    2. mock-relying-party-service

    Mock relying party UI

    UI component consists of the login page and a user profile page.

    The login webpage is built with the Log in with eSignet button. With the click of this button, the user is redirected to the authorization endpoint of the eSignet UI.

    The user profile "/userprofile" webpage is crafted to which the eSignet server redirects after successful authentication with "auth-code".

    On a load of the user profile webpage, the "/fetchUserInfo" endpoint of the mock-relying-party service is invoked with a valid auth code.

    Mock relying party service

    This service only hosts the "/fetchUserInfo" endpoint.

    The "/fetchUserInfo" endpoint will invoke the "/token" endpoint of the eSignet server with client_private_jwt auth.

    On receiving the id-token and access-token from the "/token" endpoint, the mock-relying-party-service invokes the "/userinfo" endpoint of the eSignet server to fetch user details. Decoded user info is returned as the response to the "/fetchUserInfo" endpoint.

    How to build and run the mock relying party portal locally?

    To build and run the mock relying party portal please refer to the below README.md file

    MOSIP

    MOSIP (Modular Open Source Identity Platform) is an open-source, API-first identity management solution enabling countries to develop national ID systems using open standards. It provides individuals with a foundational identity, ensuring secure, scalable, and inclusive identity management.

    How eSignet Integrates with MOSIP

    eSignet integrates with MOSIP through the ID Authentication module, enabling secure identity verification and credential management via key APIs:

    • KYC Authentication API: Verifies user identities securely.

    • KYC Exchange API: Shares encrypted KYC tokens.

    Use Case

    Patient Access to Health Services

    A patient with a national ID can log in to an online health portal to check appointments and health records. The login process is handled by eSignet, which authenticates the patient’s identity against the MOSIP national ID system, ensuring secure access to personal health data. This integration provides seamless, secure, and scalable access to healthcare services while maintaining data privacy and authenticity.

    👉 Learn more about integration with .

    👉 To try it out yourself in our sandbox environment, click to access the eSignet Try It Out section.

    Relying Party

    In the context of eSignet, a Relying Party refers to any external service provider or application that integrates with the eSignet platform to leverage its secure identity authentication and verification capabilities. By relying on eSignet as a trusted Identity Provider (IdP), these service providers can streamline user onboarding and access management, while maintaining a high level of security, privacy, and regulatory compliance.

    eSignet enables Relying Parties to authenticate users based on verified identity data, including biometric authentication and government-issued credentials, without the need to build or manage their own identity infrastructure. This allows service providers to focus on delivering their core services while ensuring that only legitimate users can gain access.

    Whether it's a financial institution verifying customer identity for KYC compliance, a healthcare provider granting access to medical records, or a digital service requiring strong authentication, eSignet serves as the central identity authority that these services trust.

    To learn more about the integration process and technical requirements, please refer to the following resources:

    • Integration Options and Discovery Endpoints – Know about the options available to integrate with eSignet in MOSIP collab environment and discovery endpoints.

    • – A step-by-step guide to help you prepare your service for integration with identity providers.

    • – Technical documentation and best practices for implementing eSignet as your trusted identity provider.

    Try It Out

    Experience eSignet in our Collab sandbox – try, integrate, and explore.

    The latest stable version of the eSignet solution is deployed in our Collab environment. featuring the most up-to-date QA-certified Docker images.

    This sandbox is designed for:

    👉 ID Solution Providers - Representatives of ID solutions who are seeking a convenient method to enable authentication,

    👉 Developers & Integrators- who are interested in gaining a better understanding of how eSignet works or those who wish to demonstrate eSignet.

    👉 Relying Parties - Relying parties can efficiently utilize this platform to seamlessly integrate and ascertain its compatibility with the protocols employed by eSignet.

    Here are some ways you can use our sandbox environment: Collab

    Start exploring eSignet today in our Collab Sandbox! 🚀

    Interoperability

    Seamlessly integrate with MOSIP, Inji, and OpenCRVS for enhanced digital services.

    eSignet is built with a modular architecture that offers multiple integration points, ensuring flexibility to accommodate diverse use cases. This design enables seamless integration across various platforms, providing secure identity verification and delivering a smooth user experience across applications and services.

    eSignet currently integrates with the following platforms:

    Integration Guides - eSignet

    Explore seamless eSignet integration with guides on authentication, digital wallets, and more.

    This section contains various guides and information that could benefit:

    • Organizations, nations, and ID registries have an identity solution with authentication capabilities to enable Open ID connect-based authentication.

    • Relying parties or service providers from countries where the eSignet solution is deployed.

    • Digital wallets are those who want to integrate with eSignet and provide wallet-based authentication solutions or store verifiable credentials in their wallets.

    For more information on how to get started with these integrations, read through:

    v0.9.0

    Release Name: IdP (Beta)

    Release Date: 8th January, 2023

    Overview

    The IdP (0.9.0 version of eSignet) focuses on essential features such as Login with OTP and Login with Biometrics. The subsequent releases will have more features and integration with digital wallet solutions.

    Features Covered

    The basic features such as,

    • Login with OTP

    • Login with Biometrics

    are available as a part of this release.

    Documentation

    OpenCRVS

    OpenCRVS (Open Civil Registration and Vital Statistics) is a digital system designed to capture and manage vital life events such as births, deaths, marriages, and divorces. It provides individuals with a legal identity and serves as a key source of demographic data, supporting policy-making, planning, and resource allocation. OpenCRVS ensures accurate registration of vital events, forming the foundation for a comprehensive and reliable identity management infrastructure.

    Integration with MOSIP

    • Combines MOSIP’s digital identity management with OpenCRVS’s event registration.

    • Enables seamless data exchange for efficient registrations.

    • Works in both connected and remote areas with limited connectivity.

    How eSignet Integrates with OpenCRVS

    • Secure Authentication: eSignet provides secure authentication for individuals reporting vital events, ensuring that only legitimate users can register events in OpenCRVS.

    • Identity Verification for Parents/Guardians: Before issuing a Unique Identity Number (UIN) and generating certificates, eSignet verifies the identity of parents or guardians to ensure authenticity.

    • Data Accuracy & Security: eSignet enhances the security, accuracy, and integrity of captured data, preventing fraudulent registrations or modifications.

    Use Case

    eSignet Integration with OpenCRVS for Vital Event Registration

    eSignet is used to authenticate the person reporting a vital event, such as a parent, guardian, introducer, or informant, before any vital event registration in OpenCRVS. This ensures secure identity verification, preventing unauthorized individuals from registering or updating events, and ensures data accuracy across various types of vital event registrations.

    Events where eSignet Integration can be used:

    1. Birth Registration eSignet authenticates the parent or guardian before issuing a Unique Identity Number (UIN) to newborns, ensuring secure and fraud-resistant birth registrations in OpenCRVS.

    2. Demographic Data Update eSignet facilitates secure authentication for updating demographic details (e.g., name changes, and address updates), ensuring records remain accurate and up-to-date while preventing unauthorized modifications.

    3. Death Registration eSignet verifies the identity of authorized family members or officials before registering a death in OpenCRVS, ensuring the integrity of national identity records and preventing fraudulent use of deceased individuals' identities.

    👉 Learn more about integration with .

    Login with OTP

    Prerequisites: The resident is issued with a unique virtual ID for a country's foundation ID. In the below demo application, which is a health portal, the resident is registered with MOSIP and has a valid UIN or VID.

    1. On the portal, the resident clicks on the button Sign In with eSignet.

    Sign in with eSignet

    The login screen appears and the resident is displayed with the options they can choose for login.

    2. To get started with login with OTP authentication, the resident clicks on Login with OTP option.

    Login with OTP

    3. The resident needs to enter a valid VID in the Enter Your VID text field and check the box 'I'm not a robot'.

    The OTP-based authentication is now secured with a captcha.

    4. Next, the resident clicks on the Get OTP button.

    5. The resident receives the OTP on the registered channel (either by phone or email).

    6. The resident needs to enter the valid OTP received and click on the Verify button.

    7. The resident is then navigated to the Consent page. On this page, the Essential and Voluntary claims are displayed.

    The consent screen is presented solely to the resident if consent has not previously been obtained. Additionally, a timer is incorporated into the Consent screen, allowing the resident to respond within the designated time frame. If the allotted time elapses, residents will be redirected to the relying party user interface.

    8. The resident is given the option to choose from a list of Authorized scopes and Voluntary claims. The Essential claims are mandatory and cannot be modified. A master toggle button has been added to allow residents to select all the options at once if desired.

    9. The resident should now click the Allow button. The system navigates the resident to the User Profile page which displays all the personal information based on the consent provided.

    Develop

    Build, integrate, and enhance solutions with eSignet.

    Welcome to the Develop section of eSignet’s documentation. This section provides developers with the tools, components, and guidelines for building, customizing, and integrating with the eSignet platform.

    Explore the sections below to get started:

    Technology

    Understand the technologies behind eSignet, including architecture diagrams, frameworks used, and system design considerations.

    Learn how to configure eSignet’s properties for different implementations, covering authentication, cache, plugins, and key management.

    Essential steps to integrate eSignet with any relying party and ID system.

    Refer here for all the APIs used by eSignet.

    End User Guide

    How the Signup Flow Works

    1. Redirection to eSignet Signup Portal

    When users access the health services portal for the first time, they are redirected to the eSignet Signup Portal to complete their registration.

    2. First Login & Video eKYC

    Once signed up, users are prompted to complete a video eKYC (electronic Know Your Customer) process on their first login. This ensures verified digital identity and eliminates the need to repeatedly enter personal information.

    Why This Integration Matters

    Integrating the eSignet Signup Service with the health services portal enables trusted digital onboarding and simplifies access to government and health services by leveraging the country’s foundational ID system.

    .

    The Signup service is not available in the MOSIP Collab as of now for self experience.

    Note: The Signup service is not available in the MOSIP Collab as of now for self experience.

    Develop

    This section provides developers with the tools, components, and guidelines for building, customizing, and integrating with the signup module.

    Explore the sections below to get started:

    Technology

    Understand the technologies behind signup, including architecture diagrams, frameworks used, and system design considerations.

    Seamlessly register and verify identities with the Signup Portal’s robust components and secure eKYC integration.

    Essential steps to integrate Signup with any Relying Party and ID system

    Refer here for all the APIs used by signup.

    Profile Registry Plugin

    What is Profile Registry Plugin?

    ID registry plugin enables eSignet's Signup service to integrate with any Id registry system. This essentially means that eSignet now does away with tight integration with MOSIP ID-repository and makes way for any ID Repository system to be integrated with eSignet.

    The dependency on the MOSIP ID repository has been removed in eSignet Sign Up Service versions 1.1.0 and above.

    Sequence Diagram

    Please refer to the sequence diagram below for the detailed working flow of the profile registry plugin.

    Profile Registry Plugin Interface

    Please for the Profile Registry Plugin interface.

    Local Deployment

    This document details the steps for running eSignet locally on your system for local development and integration.

    For the local deployment, eSignet is integrated with the mock identity system using eSignet plugins specifically developed to connect with the mock identity system.

    We have a docker-compose setup to start eSignet and its dependent services. Kindly refer to the readme file to know the steps to run the docker-compose in detail.

    API Documentation

    To know about the query parameters that are required to test the OIDC flow, refer to our API documentation.

    Postman Collection

    We also have Postman scripts available under the folder in the eSignet GitHub repository.

    Mock Identity System

    This is a mock implementation of an identity system. We provide this system so developers can use it for local development and testing of eSignet.

    The mock system can be run with endpoints to,

    • create an individual

    • get an individual's data

    Inji

    Inji enables the secure issuance, storage, exchange, and verification of data as verifiable credentials. It shifts from physical documents to a digital-first approach, simplifying service access, enhancing security, and supporting the growth of the digital economy.

    Inji Sub-modules

    • Inji Wallet: Securely store and manage verifiable credentials.

    Test

    Try, test, and integrate eSignet with end-user scenarios and developer tools.

    Welcome to the Test section! Here, you can explore how to integrate, test, and use eSignet across different scenarios. Whether you're experimenting with mock data, setting up integrations, or guiding end users through login methods, this section has you covered.

    Explore the sections below for detailed guides and instructions:

    OAuth Autorization Server Well-Known

    Overview

    The oauth-configuration well-known endpoint in eSignet exposes metadata that describes the capabilities, endpoints, and supported features of the authorization server. This metadata follows the OpenID Connect Discovery and OAuth 2.0 Authorization Server Metadata specifications (), enabling client applications to automatically obtain configuration details required for integration.

    The values published by eSignet at this endpoint align with the standard OAuth Authorization Server well-known specifications.

    Login with Biometrics

    The login with biometrics is illustrated with the help of a demo health portal.

    1. On the portal, the resident clicks on Sign In with eSignet.

    2. To get started with login using biometrics, the resident clicks Login with Biometrics.

    3. The resident needs to enter a valid VID in the Enter Your VID text field.

    4. Next, the resident selects a device (face/ iris/ finger) and provides their biometrics.

    A new "Refresh" button has been implemented to facilitate the display of recently connected devices in the list.

    Knowledge Based Identification

    Knowledge Based Identification (KBI) is a security measure to verify the identity of an individual based on information that is typically known only to the individual being authenticated. This method relies on the understanding that the person requesting access to a system or service possesses certain private information that only the legitimate user would know.

    In KBI, users are often asked to provide answers to specific questions or prompts that are related to their personal history or identity. These questions could cover a range of topics like:

    1. Personal information (e.g., date of birth, address, social security number)

    2. Account related details (e.g., last transaction amount, account creation date)

    Integrate with eSignet

    If you are a relying party looking to integrate with eSignet, you can connect with us by completing the here. This will assist us in facilitating a seamless integration on .

    Here are some FAQs on the Google form.

    What are redirect URIs?

    The redirect URIs are the list of URIs the relying party provides where the authorization code needs to be sent after successful authentication by eSignet.

    Why do you need a public key?

    Integration with eSignet portal

    Overview

    The Signup module is designed with a flexible architecture that allows it to integrate with any Identity Provider (IdP). In this setup, we have provisioned its integration with eSignet to enable seamless user onboarding and identity verification.

    To enable this integration, please refer to the configuration details provided in the sections below.

    v1.4.2

    Release Number: v1.4.2(Patch)

    Release Date: 22nd Nov, 2024

    Overview

    We are pleased to announce the patch release 1.4.2 for eSignet. This release includes updates to the missing properties in the docker compose configuration, ensuring a smoother local setup for eSignet. Please note that no changes have been made to the artifacts in this release. The following updates have been added as part of this patch:

    Digital Wallet

    A digital ID wallet is a tool or software-based system that stores and manages personal information and identity credentials securely in a digital format. It helps people keep their information organized and protected. This wallet ensures the safety of personal data and makes it easily accessible when needed.

    Note: To learn more about Digital ID Wallets and their use, you can refer to this article on .

    End User Guide

    Fast, secure authentication for residents made easy.

    Getting Started: Seamless Access with eSignet

    In this user guide, we take the example of a health services portal acting as a Relying Party with eSignet. Residents can quickly and securely identify themselves using their country’s foundation ID system (here, MOSIP), avoiding the hassle of repeatedly filling out account or personal information. This streamlined process ensures faster access to services and benefits while maintaining security and privacy.

    Login with Password

    Prerequisites:

    The resident is registered with a username and password using eSignet's Signup portal. In the below demo application, we are using the resident's phone number as a username.

    1. On the portal, the resident clicks on the button Sign In with eSignet.

    The login screen appears, and the resident is displayed with the options they can choose for login.

    API

    Please refer for eSignet authentication API documentation.

    Mobile: Access and manage digital credentials via the Inji Wallet mobile app.

  • Web: Securely interact with verifiable credentials through the web platform.

  • Inji Certify: Issue and certify trusted digital credentials.

  • Inji Verify: Confirm the validity of issued credentials.

  • How eSignet Integrates with Inji

    • Credential Download: eSignet authenticates users to download verifiable credentials via their national ID securely.

    • Key Binding: Links user IDs to public keys, returning a signed Wallet User ID for secure identification.

    • Login & Authentication: Enables secure login through Inji Wallet or compatible wallets.

    eSignet leverages below plugins to achieve credential downloading and sharing:

    • Key Binding API: Links user IDs with digital wallets.

    • VC Exchange API: Shares verified credentials (VCs).

    Use Case

    eSignet Integration with INJI Wallet for Secure Login

    eSignet supports the download of user credentials as verifiable credentials (VC) into the INJI wallet after authenticating the user against the MOSIP national ID system. These VCs can then be used for secure login to the health services portal by scanning the QR code with the INJI wallet, providing a seamless and verified access experience.

    • Learn more about Inji.

    To try it out yourself in our sandbox Collab environment, click here to access the eSignet Try It Out section. For step-by-step instructions, refer to our end user guide.

    MOSIP
    Collab
    here
    Onboarding Your Relying Party to Any Identity Provider
    Development and Integration with eSignet

    QA Report

    Feature Documentation
    Integration Guides
    End User Guide
    API Documentation
    OpenCRVS
    Configure eSignet
    Integration guides
    API Reference
    Refer to the User Guide
    Components - Signup Portal
    Integration guides
    API Reference
    postman-collections
    here

    Explore how to implement and integrate the Authenticator plugin for user authentication with eSignet.

    Explore how to bind an individual's ID with a public key to enable secure token-based authentication.

    Explore how to bind user IDs with public keys for wallet authentication.

    Explore how digital wallets store credentials and enable authentication in eSignet.

    Explore setup steps, OIDC client registration, authentication flow, and integration best practices.

    refer here
    Profile Registry Plugin
    Cover

    Experience eSignet in our Collab sandbox.

    Cover

    Explore guides to help residents with secure, hassle-free authentication.

    Cover

    Explore guides for integrating eSignet with authentication and digital wallets.

    Cover

    Explore guides for seamless eSignet integration with authentication, digital wallets, and relying parties.

    Using Mock Data
    Register Yourself
    Integrate with eSignet
    Cover
    Cover
    Cover

    MOSIP

    Inji

    OpenCRVS

    Cover
    Cover
    Cover
    Enter your UIN/VID
    Get OTP Page
    Verify OTP
    Voluntary Claims page
    Vlountary Claims page
    Profile page
    Oauth - Authorization server Configuration

    Please refer below for more details.

    As per the FAPI 2.0 Security Profile, the OAuth Authorization Server now includes a new parameter: authorization_response_iss_parameter_supported.

    Parameter Details and Descriptions

    • issuer: The base URL of the OpenID Connect provider. The value comes from the configuration property mosip.esignet.discovery.issuer-id.

    • authorization_endpoint: The URL where the authorization request can be initiated.

    • token_endpoint: The URL where the token exchange occurs to obtain an access token.

    • token_endpoint_auth_methods_supported: The supported authentication methods for the token endpoint. In this case, private_key_jwt is supported.

    • token_endpoint_auth_signing_alg_values_supported: The supported signing algorithms for the authentication of the token endpoint. In this case, RS256 (RSA with SHA-256) is supported.

    • userinfo_endpoint: The URL where additional user information can be requested. jwks_uri: The URL where the JSON Web Key Set (JWKS) can be retrieved. The JWKS contains the public keys used to verify ID tokens and other JWTs.

    • scopes_supported: The supported scopes that can be requested during the authentication process. The value should come from the configuration property mosip.esignet.supported.openid.scopes. Common scopes include profile, email, and phone.

    • response_types_supported: The supported response types. In eSignet, we support only two values 'code' and 'code token', for the code flow and the code token flow.

    • ui_locales_supported: The supported user interface locales for localization. The value comes from the configuration property mosip.esignet.supported.ui.locales. Examples: en (English), fr (French), and ar (Arabic).

    • authorization_response_iss_parameter_supported: Indicates whether the authorization server includes the iss (issuer) parameter in the authorization response. In eSignet, this value is always set to true by default.

    RFC 8414
    {
      "issuer": "https://esignet.es-dev1.mosip.net",
      "authorization_endpoint": "https://esignet.es-dev1.mosip.net/authorize",
      "token_endpoint": "https://esignet.es-dev1.mosip.net/v1/esignet/oauth/v2/token",
      "jwks_uri": "https://esignet.es-dev1.mosip.net/.well-known/jwks.json",
      "pushed_authorization_request_endpoint": "https://esignet.es-dev1.mosip.net/v1/esignet/oauth/par",
      "token_endpoint_auth_methods_supported": [
        "private_key_jwt"
      ],
      "token_endpoint_auth_signing_alg_values_supported": [
        "RS256",
        "PS256",
        "ES256"
      ],
      "scopes_supported": [
        "openid",
        "profile",
        "email",
        "phone"
      ],
      "response_modes_supported": [
        "query"
      ],
      "grant_types_supported": [
        "authorization_code"
      ],
      "response_types_supported": [
        "code"
      ],
      "authorization_response_iss_parameter_supported": true
    }
    authenticate an individual
  • send an OTP

  • share KYC data about the individual post-authentication

  • Below are the authentication factors supported:

    • PIN-based authentication

    • OTP authentication

    • Biometric authentication

    Codebase

    Github Repository

    Local Setup

    To successfully set up the mock identity system in your local machine please refer to the steps listed in this README.md file.

    The resident clicks on the Scan and Verify button.

    5. The resident is then navigated to the Consent page. On this page, the Essential and Voluntary claims are displayed.

    The consent screen is presented solely to the resident if consent has not previously been obtained. Additionally, a timer is incorporated into the consent screen, allowing the resident to respond within the designated time frame. If the allotted time elapses, residents will be redirected to the relying party user interface.

    6. The resident is given the option to choose from a list of authorized scopes and voluntary claims. The essential claims are mandatory and cannot be modified. In eSignet, a "master toggle button" has been added to allow residents to select all the options at once if desired.

    7. The resident clicks on the Allow button. The system navigates the resident to the User Profile page and the page displays their details based on the consent provided.

    Profile page
    Health Portal login page
    Login with Biometrics
    Scanning Devices for Biometric

    Preferences or history (e.g., favorite colour, first pet's name)

    eSignet has expanded its authentication options to include KBI as one of its factors. With eSignet's integration capabilities, existing ID repositories storing user specific details can now be easily integrated with eSignet. This integration enables OpenID based login, allowing users to access relying party services seamlessly.

    Note:

    1. The authentication factor can be referred to as either Knowledge Based Authentication (KBA) or Knowledge Based Identification (KBI). However, from the eSignet’s perspective, we will specifically refer to the authentication method as Knowledge Based Identification (KBI).

    2. Given the relatively low level of assurance provided by Knowledge Based Identification (KBI), we recommend that Knowledge Based Authentication (KBA) / Knowledge Based Identification (KBI) should be used for the issuance of Verifiable Credentials (VC) or certificates rather than serving as a primary method of authentication.

    The below mentioned scenario describes a user attempting to download a VC (Verifiable Credential) from the list of VC issuers through their mobile wallet (for example., Inji Wallet). The user is verified using Knowledge Based Identification (KBI) through eSignet.

    Prerequisite:

    1. The Resident has installed a mobile wallet (for example., Inji app) on their mobile device

    2. The Resident has received the policy number from their insurance provider, which would be required for KBI

    Steps

    1. The resident accesses their digital wallet (e.g., Inji Wallet) and taps on the plus '+' button.

    2. Resident selects their preferred issuer from the available list.

    3. Resident provides their Policy Number, Full Name, and Date of Birth as credentials for KBI login.

    4. The resident clicks on the Login button.

    5. Upon successful completion, the user downloads their Insurance Card into their digital wallet (Inji Wallet).

    The public key shared by the relying party is used to verify the digital signature when there is an authorization request. It is also used to encrypt the user_info and send it to the relying party.

    What is JWK format?

    JWK (JSON Web Key) is a JSON data structure that represents a set of public keys utilizing either the Elliptic Curve or RSA families of algorithms (public key cryptography).

    Learn more about JWK here.

    How can I convert a public key to JWK format?

    Here is the easiest way to convert your public key (a .PEM file) to JWK format for testing.

    • Go to the link https://russelldavies.github.io/jwk-creator/

    • Select Public Key Use as Signing

    • Select Algorithm as RS256

    • Select Key ID as alpha-numeric-random-string

    • Paste the public key PEM file content in PEM encoded key

    • Click on the convert button

    Once you receive the eSignet credentials at the email address provided on the form, please go through our integration guide on Relying Party Integration to complete the integration.

    form
    collab
    Display Signup Option on Authentication Screen

    Ensure that the option for SignUp is visible to the user when they land on the authentication screen. This can be configured by adjusting the relevant display settings or UI properties within the eSignet configuration.

    SignUp Option on Authentication Screen

    Below property should be marked as true, if the signup banner should be displayed. If not required, a banner can be hidden by setting the flag to false. By default, the signup banner is enabled as shown below:

    Configuring Forgot Password

    For password-based authentication, the "Forgot Password" link is enabled by default on the authentication screen. To disable this link, set the corresponding flag to false in the configuration as shown below:

    Forgot Password Page

    Consent for Unavailable Claims

    For the Identity (eKYC) verification process, eSignet includes a built-in feature to inform the user when certain verified claims are unavailable. A popup is displayed, showing details of the missing claims and prompting the user to initiate the verification process. Detailed consent regarding the Personally Identifiable Information (PII) that will be captured during the verification will be handled through the SignUp portal.

    Claim Details Page
    Key Updates
    1. Updated Property Value

      • Corrected the missing property value in the application-default.properties file under the docker-compose folder. Cache names missing in the property mosip.esignet.cache.names are added as part of this patch.

    2. Postman Utility Library Installation

      • Added clear installation instructions for the postman-utility-lib in the README file to simplify the setup process.

    3. Updated Docker Configuration

      • Updated the Docker Compose file to replace mosipqa images with mosipid images, ensuring consistency with the latest environment configurations.

    Note: The API test rig is currently using a snapshot version of the commons library. As a result, the build failure associated with the API test rig is ignored for this release.

    Repositories Released

    Repository Released

    Tags

    eSignet

    How is digital wallet used in eSignet?

    Digital Wallet in eSignet can be used as,

    • An application to store verifiable credentials for a holder

    • An authenticator application to provide wallet local authentication

    For more details view the below documentation:

    • Credential Holder

    • Wallet authenticator

    Digital ID Wallet Comprehensive Guide
    Before starting with the login flows, please refer here to understand more about user claims.

    eSignet supports the login flow for the following authentication factors:

    1. Login with Password

    2. Login flow for OTP-based authentication

    3. Login flow for Biometrics based authentication

    4. Login flow with QR code (Inji)

    Note: The screenshots and the steps mentioned in each of the flows are for demonstration purpose only and are likely to change based on the use case.

    Note: If the acr_values the query parameter is presented with only one acr in the authorized URL, then the login options page is skipped, and the resident is directly taken to the login page.

    2. The resident needs to enter a registered username in the Enter 8–9-digit mobile number and password in the Enter password text field and check the box 'I'm not a robot'.

    The password-based authentication is secured with a captcha.

    4. Next, the resident clicks the Continue button.

    Note:

    • The login with Password form also has a link to Sign Up With Unified Login to navigate to the Signup portal, if the resident is still not registered.

    • Forgot password link is also available for resident to navigate to the signup portal to reset the password.

    • Resident can resume back login after successful registration as well as after successful reset of password.

    5. The resident is then navigated to the Consent page. On this page, the Essential and Voluntary claims are displayed.

    The consent screen is presented solely to the resident if consent has not previously been obtained. Additionally, a timer is incorporated into the Consent screen, allowing the resident to respond within the designated time frame. If the allotted time elapses, residents will be redirected to the relying party user interface.

    6. The resident should now click the Allow button. The system navigates the resident to the User Profile page which displays all the personal information based on the consent provided.

    Sign in with eSignet page

    Technology Stack

    eSignet is built using the below tools and technologies.

    Services and Rest Endpoints

    eSignet leverages a combination of backend technologies to ensure secure identity management and seamless service delivery.

    Tool/Technology
    Version
    Description
    License

    Storage

    eSignet utilizes high-performance storage solutions for managing structured and real-time data.

    Tool/Technology
    Version
    Description
    License

    Deployment

    eSignet is designed for containerized and automated deployments, leveraging modern DevOps tools.

    Tool/Technology
    Version
    Description
    License

    Testing

    eSignet ensures reliability and stability through automated testing frameworks and API testing tools.

    Tool/Technology
    Version
    Description
    License

    Releases

    Please refer below for all the latest release details ✨

    Version: 1.7.0

    • Name: eSignet

    • Date: 2nd December, 2025

    Version: 1.6.2

    • Name: v1.6.2 (Patch)

    • Date: 28th August, 2025

    Version: 1.6.1

    • Name: eSignet(Patch)

    • Date: 29th July, 2025

    Version: 1.5.1

    • Name: eSignet(Patch)

    • Date: 24th Feb, 2025

    Version: 1.5.0

    • Name: eSignet

    • Date: 23rd Jan, 2025

    Version: 1.4.2

    • Name: eSignet(Patch)

    • Date: 22nd Nov, 2024

    Version: 1.4.1

    • Name: eSignet(Patch)

    • Date: 15th July, 2024

    Version: 1.4.0

    • Name: eSignet

    • Date: 23rd April, 2024

    Version: 1.3.0

    • Name: eSignet (Password based authentication)

    • Date: 23rd February, 2024

    Version: 1.2.0

    • Name: eSignet (VCI)

    • Date: 11th December, 2023

    Version: 1.1.0

    • Name: eSignet (consent registry)

    • Date: 22nd September, 2023

    Version: 1.0.0

    • Name: eSignet

    • Date: 14th April, 2023

    Version: 0.9.0

    • Name: IdP

    • Date: 8th January, 2023

    v1.1.0

    Release Name: eSignet

    Release Date: 22nd September, 2023

    Overview

    The 1.1.0 version of eSignet focuses on the Consent Registry feature.

    The consent registry is designed to store user consent on claims and scopes requested during login to a relying party application using eSignet or the Wallet application (Inji).

    Key highlights of this feature are:

    • Storage of user consent against the requested claims and scopes in the database

    • If consent is already provided, the consent screen is bypassed when the user logs in using eSignet.

    • Recapture consent in the event of changes in requested claims or scopes.

    Consent management is not applicable in this release as it solely focuses on the storage of user consent. The functionalities of editing, revoking, updating, or viewing the consent after it has been given by the user are considered beyond the scope of this release.

    Features Included

    Below are the features available in the release:

    • Login with OTP

    • Login with biometrics

    • Wallet based authentication

    • Multi-language support

    Repositories Released

    • eSignet:

    • artifactory-ref-impl:

    • mosip-config:

    For details for deployment go through the helm charts in the .

    Documentation

    Claims in Authentication and Authorization

    What are Claims?

    In the context of authentication and authorization, claims are statements about an entity, such as a user, made by an identity provider (IdP). Claims describe attributes, characteristics, or other properties associated with an entity.

    How Claims are Used

    Claims are typically packaged into security tokens, such as SAML (Security Assertion Markup Language) tokens or JWTs (JSON Web Tokens). They convey information about the entity's identity and associated permissions.

    Importance of Claims

    Claims are essential for implementing authentication and authorization processes. Relying parties (e.g., web applications) examine these claims to determine:

    • Whether the user should be granted access

    • The level of access the user should receive

    Claims-based authentication and authorization provide a flexible and standardized approach to identity and access management across applications and services.

    The assurance level is shared with the relying party as one of the claims in the ID token. In summary, a claim is a piece of asserted information about the authorized end-user.

    Essential and Voluntary Claims

    Essential Claims

    Necessary user information that the relying party must collect to fulfill service obligations to residents.

    Voluntary Claims

    Additional user details that residents may choose to provide, enabling access to supplementary features offered by the relying party.

    Standard OIDC User Claims Supported

    When eSignet is integrated with MOSIP IDA, the following standard OIDC user claims are supported:

    • name

    • gender

    • address

    • birthdate

    Note: The list of supported claims is given out in the endpoint.

    Supported Values in Application Properties

    The following properties in application-default.properties hold the supported values:

    Login with QR code (Inji)

    Prerequisites:

    • Residents should have the Inji app installed on their mobile devices.

    • They should have credentials downloaded and should have activated it for online login. To know how to activate the VC for online login, refer .

    1. Resident launches the relying party's portal and clicks on Sign In with eSignet.

    2. Resident selects the Login with Inji Mobile App option.

    1. Now, the resident can scan the QR code displayed on the portal using Inji (on their mobile device).

    As seen below, the authentication is in progress.

    1. On Inji, the resident can see the VC that is activated for online login. Select the VC and click Verify.

    1. After clicking on Verify, the resident is asked to perform face authentication. On successful authentication, the Consent screen is displayed.

    1. Here, the residents can provide their consent and click Allow. A successful message is displayed on Inji.

    1. The resident can log into the relying party portal and view their details on the user profile page.

    Using Mock Data

    While you want to explore eSignet, you can use the following test personas in our Collab environment.

    Personas

    Individual images are included to facilitate selfie authentication for the Inji application.

    Please select the appropriate image file corresponding to the chosen UIN above.

    Note: The data used for these Virtual IDs (VIDs) is entirely fictitious, and the images displayed are AI-generated from an .

    Steps to use eSignet

    We have developed a mock health portal that functions as a relying party web portal. As an end user, you can simulate accessing online health services by logging in with your national ID via eSignet.

    🔗 Access the Collab Health Portal .

    OTP Authentication

    To simplify testing with mock data, eSignet supports OTP authentication.

    • You can use any of the provided above for testing.

    • The default OTP for testing is "111111" (six ones).

    For a step-by-step guide on logging in with OTP using eSignet, refer to .

    .well-known

    The .well-known folder is a convention used in web development to provide a standardized location for certain files or resources that need to be publicly accessible and discoverable. It typically resides at the root level of a website or web server. The purpose of this folder is to make it easy for web clients (browsers, applications, or services) to find important files or resources related to web services and security.

    Why does eSignet use the ".well-known" directory?

    eSignet uses the ".well-known" directory to serve the following purposes:

    • Standardization: To provide a standardized location for specific public files and resources related to web services and security. It makes it easier for developers and web clients using eSignet to know where to look for important information.

    • Security: Security-related files and resources can be placed in the ".well-known" directory, such as the public certificate for encryption and signature verification.

    • Interoperability: By following the ".well-known" convention, web developers using eSignet can ensure interoperability with various web standards and protocols. For example, eSignet shares the context file, which contains the structure of its verifiable credentials.

    • Ease of Configuration: Web servers can be configured to serve files from the ".well-known" directory without needing custom configurations for each specific resource. This simplifies the server setup and maintenance process.

    • Transparency: For matters related to security policies and contact information, such as in the "security.txt" file, placing them in a well-known location makes it transparent and easily accessible to anyone interested in the website's security practices.

    How is ".well-known" directory used in eSignet?

    eSignet's ".well-know" directory contains the four files mentioned below:

    Key Binder Plugin

    The Key Binder plugin interface provides a method to bind an individual's ID with a public key. On successful binding, it returns a signed certificate called Wallet User ID which uniquely identifies the user and the wallet.

    When a new binding request is received, it is expected that the key binder implementation takes care of overriding previously bound certificates with the newly generated signed certificate for a user.

    The individual needs to be authenticated before binding the key. The interface is structured to accept any type of authentication challenge, namely OTP or biometrics.

    The bound certificate will then be usable to do token-based authentication like WLA (Wallet Local Authentication) from any digital wallet app.

    Please refer here for the key binder interface refrence implementation

    Note: For the latest version of the interface please check our code base -

    Who uses this interface?

    The APIs exposed by this interface are used by to perform wallet binding while it is implemented by .

    How to implement this plugin?

    The Key Binder implementation class must be annotated with ConditionalOnProperty with mosip.esignet.integration.key-binder property.

    Below is an example of how our has implemented the eSignet KeyBinder plugin.

    Appendix - Key Binding

    The Key Binding functionality is depicted in the diagram below:

    Here, the Binding Partner is nothing but the wallet backend service.

    v1.4.0

    Release Number: v.1.4.0

    Release Date: 23rd April, 2024

    Overview

    Version 1.4.0 of eSignet introduces a new authentication mode and addresses known issues.

    1. Knowledge Based Identification (KBI)

      We are excited to share that eSignet has expanded its authentication options to include Knowledge Based Identification (KBI) as one of its factors. With eSignet's integration capabilities, existing ID repositories storing user specific details can now be easily integrated with eSignet. This integration enables OpenID based login, allowing users to access relying party services seamlessly.

    To learn more about Knowledge Based Identification, click .

    1. Fixes for known issues from v1.3.0

    Note:

    1. The authentication factor can be referred to as either Knowledge Based Authentication (KBA) or Knowledge Based Identification (KBI). However, from the eSignet’s perspective, we will specifically refer to the authentication method as Knowledge Based Identification (KBI).

    2. Given the relatively low level of assurance provided by Knowledge Based Identification (KBI), we recommend that Knowledge Based Authentication (KBA) / Knowledge Based Identification (KBI) should be used for the issuance of Verifiable Credentials (VC) or certificates rather than serving as a primary method of authentication.

    Repositories Released

    Repository Released
    Tags

    For details on deployment, refer to the in the eSignet repository.

    Documentation

    v1.0.0

    Release Name: eSignet

    Release Date: 14th April, 2023

    Overview

    The 1.0.0 version of eSignet focuses on essential features such as logging in with OTP and logging in with biometrics, along with wallet-based authentication. The subsequent releases will have more features and integration with digital wallet solutions.

    Features Covered

    The features included in this release are:

    • Login with OTP

    • Login with biometrics

    • Wallet-based authentication

    • Multi-language support

    Documentation

    Identity Verifier Plugin

    What is Identity Verifier Plugin?

    Identity Verifier plugin helps an external relying party to come as a trusted eKYC partner (verifier). The plugin is used by the verifier to verify an authenticated user (who already signed up with eSignet). An 'authenticated user' can now go to the signup portal, and choose from the list of trusted verifiers, and go through the verification process to update his/her profile with verification metadata and mark claims as verified. With this identity Verifier plugin a video based online verification process has been designed.

    The video based process can be used to verify for following:

    1. Liveliness check

    2. Face match

    3. Document verification

    4. Disability check

    After a successful verification, the verified claims and the verification metadata can be stored in the ID registry which essentially means a successful user verification and thus user creation in the system.

    How does it work under the hood?

    • Every verification process can consist of any combination of steps.

    • Signup service can start the process and end the process when signaled by the chosen verifier.

    • The end-step will expect verification details of the User and will update this in the ID registry (against this authenticated end user's individual ID).

    How is the 'user authenticated' context shared with the signup portal?

    • Authentication of the user before the verification process is carried out in eSignet(OP).

    • An authenticated user's transaction is shared as an id_token_hint to the signup portal.

    • The signup portal now takes the role of an RP and starts OIDC flow in eSignet with "mosip:idp:acr:id-token" ACR. As the authorize request already contains id_token_hint, the user will not be prompted to enter credentials, However! It may still prompt to user to provide consent, only if required, Most of the time, a "sub" claim in the user info response should suffice the requirement.

    Provision to integrate with any Identity verification workflow

    The signup service has a provision to add any steps between the start and end step in the verification workflow. We have defined the IdentityVerifierPlugin.java abstract class.

    What is it that the Verifier will only need to take care of?

    1. Initializing every workflow run with the required configuration based on the provided input.

    2. Verify the input frame based on the current step and publish the feedback or details about the next step to start in this run to kafka (publishAnalysisResult concrete method is already defined in the plugin abstract class).

    3. Once the verifier decides to end the workflow run, it should hint the signup service by publishing end step details using the same publishAnalysisResult concrete method.

    How to add Verifier and its workflow details?

    1. Verifier details should be added signup-identity-verifier-details.json

    2. Create a JSON file with workflow details, file should be named after the verifier ID as defined in the signup-identity-verifier-details.json

    Refer to signup-idv_mock-identity-verifier.json the sample workflow details file. Note the file name is prepended with constant "signup-idv_"

    Sequence Diagram

    Please refer to the sequence diagram below for the detailed working flow of the identity verifier plugin.

    Please for the Identity Verifier Plugin reference implementation.

    Credential Holder

    Digital Wallet Credential Management

    A digital wallet that aims to function as a credential holder application in eSignet must go through the onboarding process as a relying party. This document outlines the necessary steps for a wallet to utilize eSignet for downloading credentials issued by a VC Issuer using the OpenID4VCI authorization code flow.

    The sequence diagram below illustrates the steps involved in the authorization code flow that are required for downloading a verified credential.

    Sequence Diagram

    Note:

    • Currently, only the ldp_vc format in the is supported.

    • Also, the is not supported as yet.

    To gain a better understanding of the VC Issuance flow in eSignet, please refer to the activity diagram provided in the document.

    Below are the steps for on-boarding a digital wallet as an OAuth Client and using the eSignet APIs to download verifiable credentials.

    Onboard as OAuth Client

    1. Get a valid redirect deep link

    eSignet adheres to the OpenID4VCI wallet-initiated flow. Consequently, after authentication is completed, eSignet will provide the wallet with an authorization code. Thus, to integrate, the wallet must first generate a valid redirect deep link.

    2. Get OAuth client credentials

    The wallet can utilize the eSignet client management APIs to formally register as an OAuth client and obtain the necessary client credentials. This will facilitate their connection with eSignet.

    To register the client in our Sandbox environment, click .

    Authorization Code flow

    1. Call the authorized endpoint

    In order to initiate the credential issuance flow, the credential holder needs to authenticate and provide consent. Hence, the wallet needs to create a button to initiate authentication using eSignet by calling the "/authorize" endpoint.

    This process would redirect the user to a web view of eSignet's authentication screen. In this screen, the user will need to authenticate their identity and give consent to share their credentials.

    Upon successful authentication and consent, the authorization code will be sent back to the wallet application through the designated redirect deep link that has been configured.

    2. Retrieving the access token and c_nonce

    The wallet app now needs to extract the authorization code (auth-code) parameter in the redirected deep link and exchange the authorization code to get the access token and c_nonce from the eSignet server.

    Many OAuth 2.0 client libraries are available in most programming languages to perform this action.

    3. Generate key pair

    The wallet now needs to generate a key pair for the wallet holder and use the private key from the key pair to sign the c_nonce. This will be used to determine that the (PoP) of the private key is the wallet holder.

    Corresponding public key is accepted as did:jwk in the PoP.

    Note:

    • eSignet does not mandate to create a different key pair for a holder on each credential request. it is left to the discretion of the wallet implementer.

    • Only jwt Proof Type is currently supported.

    4. Get the credential using VCI credential API

    Now, the wallet can invoke the "/vci/credential" endpoint of credential service with PoP (Proof of Possession) and share the credential format metadata to get the Verifiable Credential in the requested format.

    Only the ldp_vc format in the is supported.

    Once the credential is obtained, the wallet should be responsible for securely storing it.

    Wallet Authenticator

    For a digital wallet to function as an authenticator using eSignet, it is necessary to have the user's credentials and ensure that the user's ID in the credential is securely linked to eSignet.

    Note: For details on how to get the user's credentials downloaded on eSignet, please refer to the document on - How a digital wallet can be used as credential holder?

    For details on how binding is performed in eSignet, please refer to the document on - eSignet's Key Binding Plugin.

    In this document, we will be discussing the application programming interfaces (APIs) that need to be invoked by the wallet application for executing the process of binding and subsequently performing wallet local authentication.

    Wallet Binding APIs

    As previously stated, before initiating authentication in eSignet, it is necessary to associate the user's ID with the wallet's public key.

    eSignet offers endpoints to request a one-time password (OTP) for this association, followed by another API to bind the public key of the wallet to the user's ID.

    Here, the challenge can be the OTP or any other authentication type supported by eSignet, like biometrics.

    Once the user successfully completes the binding process, their wallet will be assigned a unique user ID and receive a signed certificate from eSignet. This certificate will have an expiration time, and as a result, it will be necessary for the user to periodically reinitiate the wallet binding. It is important for the wallet to securely store this certificate and associate it with the respective Wallet User ID for proper mapping.

    When multiple VIDs are bound to a public key using a specific type of wallet, they will consistently produce the same Wallet User ID. However, only the most recent certificate signed by eSignet will hold validity. Therefore, if a user switches to a new device and proceeds to bind their wallet on that device, any signed certificates saved on the previous device will no longer be valid.

    Wallet Authentication APIs

    To utilize the wallet with a secured credential for authentication, users are required to follow these steps:

    • Firstly, users need to visit a relying party website that has enabled eSignet authentication through the wallet.

    • Next, users should use the wallet application to scan the QR code provided on the website. This will establish a connection and initiate the authentication process.

    • The wallet application will identify a link code within the QR code, which is essential for initiating the authentication.

    • To begin the authentication, the wallet will send the link code to the eSignet server using the "/linked-authorization/v2/link-transaction"

    Appendix - Wallet Local Authentication

    The diagram below illustrates the process of wallet local authentication in eSignet through the use of a digital wallet.

    Components - Signup Portal

    The image below is a block diagram of the sign up portal comprising various components along with the different layers and external systems.

    Signup components

    Signup UI

    This is the user interface component of the Signup portal is developed using React JS. Its main functionality is to handle user registration and eKYC verification. Signup UI seamlessly integrates with the UI REST endpoints provided by the signup service. The Signup UI supports multiple languages. Signup UI verifies the OTP before the user registration. A notable feature added in the signup UI is to carry out video-based eKYC verification.

    Signup Service

    This service is the primary backend spring Java application that incorporates various layers.

    1. Services: This layer defines the services implemented in the signup service. Registration service implements all the business logic related to OTP verification and the registration process. As we currently support a video-based online eKYC verification process, it requires two-way communication between UI and the backend service. To support this we establish a WS connection between signup UI and signup service, WebSocket Handler manages the WebSocket connection. eKYC verification service contains the logic to initiate and manage the eKYC verification transaction.

    2. Rest APIs: This layer exposes REST endpoints for the functionality implemented in the service layer.

    3. Cache Layer: The signup service maintains complete transaction details in the cache. Currently, supports “simple” and “redis” cache types.

    Note: All plugin interfaces are defined in the module.

    eKYC Verifiers

    Trusted claim providers are authorized(depending on policies and regulations) to carry out an identity verification process in which the user is asked to provide proof and prove legitimacy concerning the user's account.

    ID Registry

    An ID Registry is a system or database that stores and manages identity information about individuals or entities. An ID Registry is a critical part of digital identity management, acting as a centralized repository for authenticating and verifying the identity of users. In the context of the Signup Portal, the ID Registry could refer to any external system or service that stores user identity information. When a user registers, the Signup Service may interact with an ID registry to validate and store details like the user’s email, phone number, or even government-issued ID, ensuring that the identity is legitimate and unique.

    Test Report

    Test Report

    Scope

    The eSignet testing scope revolves around the following flows:

    • Login with OTP

    • Login with Biometrics (mock and real device)

    • Multiple instances of eSignet

    • Cross-browser testing: eSignet flow verification in different browsers (Chrome, Microsoft Edge, Firefox, Opera, Safari)

    Test Execution Statistics

    Functional Testing

    • Stories Verified: 10

    • Test cases: 401

      • Passed: 386

      • Failed: 9

    Device Based Testing

    • Test cases: 12

      • Passed: 11

      • Failed: 1

      • Skipped: 0

    API Testing

    • Test cases: 261

      • Passed: 261

      • Failed: 0

      • Skipped: 0

    v1.3.0

    Release Number: v.1.3.0

    Release Date: 14th March, 2024

    Note: Please be informed that the esignet-signup tag has been updated from v1.0.0 to v1.0.1 on 23rd April 2024 to address a bug in the helm installation script, which was causing esignet-signup service to fail to initialize.

    Integration Options and Discovery Endpoints

    Reference information to help relying parties select the appropriate ID system and proceed with integration.

    eSignet supports integration with both and systems for authentication and identity verification.

    The integration flow and configuration steps remain identical for both options, the only difference lies in the discovery endpoints, which determine the environment and underlying ID system you connect to.

    Note: The two options listed here — Mock ID and MOSIP ID — are provided only for testing and proof-of-concept (POC) purposes within the .

    Purpose-Based UI Rendering in eSignet

    eSignet now supports dynamic UI rendering based on the purpose defined by the relying party (client) during client registration. This enhancement ensures that the user experience is tailored and context-aware across different workflows such as Login, Verify, or Link.

    Why Purpose-Based Rendering?

    Different service interactions require different messaging and UI contexts. For instance:

    jwks.json

    Overview

    The JSON Web Key Set (JWKS) is a collection of public keys used to verify any JSON Web Token (JWT) issued by the Authorization Server. These keys are signed using the RS256 signing algorithm and are exposed through the JWKS well-known endpoint for relying parties to fetch and use for token verification.

    Json JWKS Well Known Configuration

    Integration Guides - Signup

    Comprehensive guides for seamless SignUp portal integration with external systems.

    The section containing integration guides for the SignUp portal offers valuable resources to help integrate the portal with external systems. These guides provide detailed instructions for seamless communication between the SignUp portal and various third-party services.

    1. The guides cover integrating external systems such as identity verification platforms and authentication services with the SignUp portal.

    2. They also provide instructions for integrating data management systems to ensure smooth data flow and secure processing during user registration.

    mosip.esignet.ui.signup.config = 
    {
      'signup.banner': true,
      'signup.url': '${mosip.signup.domain.url}/signup'
    };
    mosip.esignet.ui.forgot-password.config = 
    {
      'forgot-password': true,
      'forgot-password.url': '${mosip.signup.domain.url}/reset-password'
    };

    Skipped: 6

  • Test Rate: 98% With Pass Rate: 97%

  • Test Rate: 100% With Pass Rate: 91%

    Knowledge Based Identification
    Release Notes
    Release Notes
    Release Notes
    Release Notes
    Release Notes
    Release Notes
    Release Notes
    Release Notes
    Release Notes
    Release Notes
    Release Notes
    Release Notes
    Release Notes

    Captcha validation

  • Consent storage

  • QA Report

    v1.1.0
    v1.2.0.1-B5
    v1.1.0-ES
    eSignet repository
    Feature Documentation
    Integration Guides
    End User Guide
    API Documentation
    jwks.json
    oauth-configuration
    openid-configuration
    QA Report

    esignet

    v1.4.0

    mosip-config

    v1.4.0-ES

    artifactory-ref-impl

    v1.4.0-ES

    digital-credential-plugins

    v0.1.0

    here
    helm charts
    Feature Documentation
    Integration Guides
    End User Guide
    API Documentation

    Captcha validation

    QA Report

    Feature Documentation
    Integration Guides
    End User Guide
    API Documentation
    v1.4.2
    Inji User Guide
    Health Portal Home Page
    Login with Inji
    Inji QR code
    The signup service will invoke the getVerificationResult method implemented by the verifier to fetch the verification details. VerificationResult can either be a failure or successful. The same will be conveyed to the end user.
    refer here
    Integration Verifier

    The private-key-jwt is supported to enforce better security.

    Credential request
    Pre-Authorized Code Flow
    VC Issuance Plugin
    here
    Proof of Possession
    Credential request
    endpoint.
  • Once the transaction has been successfully initiated, the eSignet server will respond by providing a list of authentication factors known as WLA (Wallet Local Authentication).

  • The wallet will then proceed to authenticate the user locally, possibly by comparing a selfie with the existing credentials stored on the phone.

  • Upon successful local authentication on the wallet, it should generate a signed JWT (JSON Web Token) using the provided signed certificate from the wallet binding process.

  • Subsequently, the wallet will send the signed JWT to the eSignet server via the "/link-authorization/v2/authenticate" endpoint, using WLA as the challenge.

  • After the process of authentication is completed successfully, the eSignet server will proceed to send the consent action.

  • The consent action can have two possible values: CAPTURE or NO CAPTURE. These values indicate whether the user should capture their consent or not.

  • In the event that the authentication response includes a consent action of CAPTURE, the wallet will prompt the user to provide their consent. The wallet will then proceed to share the captured consent with the eSignet server through the use of the "/link-authorization/v2/consent" endpoint.

  • The eSignet user interface now can automatically detect when consent has been given by the user. Subsequently, the authentication code will be sent to the redirect URI of the relying party.

  • Wallet Local Authentication

    Explore identity verification setup, video-based checks, workflow integration, and result management.

    Explore profile creation, validation, updates, status checks, and integration with any ID registry system.

    Explore signup integration, password reset settings, and user consent for missing claims.

    external website
    here
    personas
    this detailed guide

    Plugins: Integration points with external systems are designed to be pluggable, allowing easy integration. The pluggable integration points are as follows:

    • Profile Registry Plugin- To create and update user identity data

    • Identity Verifier Plugin - Plugin to verify the user identity data, basically the backend for the eKYC verification process.

    • Audit Plugin - For auditing all events

  • Reused: Modules from the MOSIP platform and eSignet are reused in the Signup service instead of rewriting the existing logic.

  • signup-integration-api
  • email

  • phone_number

  • picture

  • openid-configuration .well-known
    KeyBinder.java
    Digital Wallets
    Identity Systems
    Mock Identity System
    Login: Accessing a service using verified credentials.
  • Verify: Authenticating user identity to validate a claim.

  • Link: Associating a digital ID with another identity or account.

  • With this feature, eSignet dynamically adjusts the UI text and flow based on the configured purpose, providing users with a more intuitive and relevant experience.

    How It Works

    During client registration, the relying party defines the intended purpose for the authentication request. Based on this configuration, eSignet dynamically renders the login interface accordingly.

    Configuration Parameters

    Parameter
    Type
    Description

    purpose.type

    String

    Defines the purpose of the UI rendering. Acceptable values: verify, login, link, none

    purpose.title

    Object

    (Optional) Custom title text displayed on the UI. Supports internationalization.

    purpose.subTitle

    Object

    (Optional) Custom subtitle text shown below the title. Supports internationalization.


    Valid Values for purpose.type

    • login – Default login interface

    • verify – Verification flow (e.g., claim validation)

    • link – Linking identity or accounts

    • none – No specific UI context; defaults to standard login behavior

    Note: If the purpose.type is missing or invalid, the system defaults to login behavior.

    Localization Support

    The title and subTitle fields support language-specific values using locale keys. For example:

    Example OIDC Request Payload

    Summary

    With purpose-based UI rendering, eSignet enables:

    • A personalized user experience for different authentication flows

    • Clear context provided via customizable titles and subtitles

    • Seamless integration using OIDC request payloads

    This feature is especially valuable for deployments with multiple service touch points that require tailored messaging across workflows.

    Please refer below for more details.
    {
      "keys": [
        {
          "kty": "RSA",
          "x5t#S256": "VS8O8lB_M4-ge70X-GmRwVSkRyXyNjnsR0D-jYYpd90",
          "e": "AQAB",
          "use": "sig",
          "kid": "ui7Nf7dSQ3q71wHDz1PauQXna2ruMk9va47kne3cahY",
          "x5c": [
            "MIIDvTCCAqWgAwIBAgIITYyS7rMLxKQwDQYJKoZIhvcNAQELBQAwdzELMAkGA1UEBhMCSU4xCzAJBgNVBAgMAktBMRIwEAYDVQQHDAlCQU5HQUxPUkUxDTALBgNVBAoMBElJVEIxGjAYBgNVBAsMEU1PU0lQLVRFQ0gtQ0VOVEVSMRwwGgYDVQQDDBN3d3cubW9zaXAuaW8gKFJPT1QpMB4XDTIzMDQyODA3MDMyM1oXDTI2MDQyNzA3MDMyM1owfzELMAkGA1UEBhMCSU4xCzAJBgNVBAgMAktBMRIwEAYDVQQHDAlCQU5HQUxPUkUxDTALBgNVBAoMBElJVEIxGjAYBgNVBAsMEU1PU0lQLVRFQ0gtQ0VOVEVSMSQwIgYDVQQDDBt3d3cubW9zaXAuaW8gKE9JRENfU0VSVklDRSkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCp/7weNfvZ8bza+SKwQZ2fM7dGFCRSc7mCLgfntWU7/5H7XxBc6ATwLfL8PZrbOywkagbmn2tvVjcdfKv3ZwkvhbMGjCS/fhkveu8y0sZt/gSecO6Sp+qdc22ASGL0xUCZ6xMGPLFOTtym28I9qq9qRj+NtJMy0tYN9uQcljkDePleZWseTOJ87KpVjtEMbrZUlG5GX/6JIvBZbkPx/L3N8//lGrJ/Cg/W6qXsN+Uka2Kp8Y0tT67Q8PqWwFYts3B26ve+E1GnVc6OpNB8j/Yw3fOcu0u1UOJbjldk8ytwwDrpxkD8ROTT/RmvjsAyDkeYRGoQ27Q/4nf0zoM22E2rAgMBAAGjRTBDMBIGA1UdEwEB/wQIMAYBAf8CAQEwHQYDVR0OBBYEFIG/x4ajYbA0WYY/pPLKlOpz+FB4MA4GA1UdDwEB/wQEAwIChDANBgkqhkiG9w0BAQsFAAOCAQEAdfVSOlxtL+cYwpcbK0x3bX3WVvXnznV/rkEh/Dh/CFld1dDteT2bOUAi8y74wmZ/ev+8wPiLozgU2vfgM4lIETm2cf/tm9Xm/fC027tQMxbB9e6p90xzRwZd3InDrLJ+USKLv6ywy/yKiZ33jW39J5AzFnx5WlSLfh2AVCmJwhxF2UZLenUOP0D7miQcqCQ89NMX4PKcZa0gPKqTfWv2TB8/SbmA5RJeXb7Mo/c3WSDh4P+sdzy3azm53vWigLNSY5emaMN+i80CrO4C+25EUpbqEbvtGSV0YU5ZtotUDSuF9PG9e77Prj8yFK657MDkXiLkcb0mnx2Fkiu7zmFiSA=="
          ],
          "exp": "2026-04-27T07:03:23.761Z",
          "n": "qf-8HjX72fG82vkisEGdnzO3RhQkUnO5gi4H57VlO_-R-18QXOgE8C3y_D2a2zssJGoG5p9rb1Y3HXyr92cJL4WzBowkv34ZL3rvMtLGbf4EnnDukqfqnXNtgEhi9MVAmesTBjyxTk7cptvCPaqvakY_jbSTMtLWDfbkHJY5A3j5XmVrHkzifOyqVY7RDG62VJRuRl_-iSLwWW5D8fy9zfP_5RqyfwoP1uql7DflJGtiqfGNLU-u0PD6lsBWLbNwdur3vhNRp1XOjqTQfI_2MN3znLtLtVDiW45XZPMrcMA66cZA_ETk0_0Zr47AMg5HmERqENu0P-J39M6DNthNqw"
        },
        {
          "kty": "RSA",
          "x5t#S256": "r4kXB_agNjON1ffULvvQxMn7D1trZkl3_BSPPmxJ6t8",
          "e": "AQAB",
          "use": "sig",
          "kid": "hrLG-Zbo-KD4c1mJjSBlWbSO5LZYHsoCDl-Wy6yRfXI",
          "x5c": [
            "MIIDrTCCApWgAwIBAgIIllIPUoxNBHswDQYJKoZIhvcNAQELBQAwcDELMAkGA1UEBhMCSU4xCzAJBgNVBAgMAktBMRIwEAYDVQQHDAlCQU5HQUxPUkUxDTALBgNVBAoMBElJVEIxGjAYBgNVBAsMEU1PU0lQLVRFQ0gtQ0VOVEVSMRUwEwYDVQQDDAx3d3cubW9zaXAuaW8wHhcNMjIwOTMwMDkzNDA4WhcNMjUwOTI5MDkzNDA4WjB2MQswCQYDVQQGEwJJTjELMAkGA1UECAwCS0ExEjAQBgNVBAcMCUJBTkdBTE9SRTENMAsGA1UECgwESUlUQjEgMB4GA1UECwwXTU9TSVAtVEVDSC1DRU5URVIgKElEQSkxFTATBgNVBAMMDHd3dy5tb3NpcC5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANzxiKwpUd66wQwsEHngQTx5mpqhAI58eo4plfeOLsutwuMrbktPXhsol6TXOKm3XcjNg/7dhF6HED3uU0YyC/CYhZ8SdThokQmPb3mE0G4gnOj94SgSV19xFZWsm4tQcXcca1i5Qzlrb8iotmuTUVcJfd5PgK1xxEgILtmbkHFMtDK42Fif0aDoOa5222/vFeFq9g3+lO7PPbysHRZl12FUtl4FvoB0dlqcJ2zpFl9lycb/8ru1S2+86UJ72yHFoFWo+tkR8Iw/lf0RvRtmc0KTY6l3813MT8uu2IDA//aPrK3CIR0dgyzNMK8e3vqrBXaxYQ8onWSBix2P/KRXlTMCAwEAAaNFMEMwEgYDVR0TAQH/BAgwBgEB/wIBATAdBgNVHQ4EFgQU93hx7ghwaK6OfoQzw5UdljX5NPowDgYDVR0PAQH/BAQDAgKEMA0GCSqGSIb3DQEBCwUAA4IBAQAjwztvdggtsx+cckVziuVl1M7bCBxJTBfmBr3bB7l3exfp5i4VsxQoxIKyPJq4ZUEylxPhO88cMr7p27PV8e4Z3q43j2Qz2ORo1CxIG/MaIIPuattRMm+5WvJTqf/T53Tt049N34aoNP6XqEF9OKoDfnOP/r1I3twX0nN4s6uurM7y6lHhhz94GM4SQ1+bbnSSs9mMNe29qYkEw46aGEJKWSQ96d43/PIJP9A2NQdf1ioeJmXHr1ZSmazf08dtI25tTDk+HwLI4x9K3elX91tItefp6q09RmRtPq7DwGvsXxVMTd6VoGHsSSeI61o37qvOe31+UldG/IpQuoxiFtER"
          ],
          "exp": "2025-09-29T09:34:08.732Z",
          "n": "3PGIrClR3rrBDCwQeeBBPHmamqEAjnx6jimV944uy63C4ytuS09eGyiXpNc4qbddyM2D_t2EXocQPe5TRjIL8JiFnxJ1OGiRCY9veYTQbiCc6P3hKBJXX3EVlaybi1BxdxxrWLlDOWtvyKi2a5NRVwl93k-ArXHESAgu2ZuQcUy0MrjYWJ_RoOg5rnbbb-8V4Wr2Df6U7s89vKwdFmXXYVS2XgW-gHR2WpwnbOkWX2XJxv_yu7VLb7zpQnvbIcWgVaj62RHwjD-V_RG9G2ZzQpNjqXfzXcxPy67YgMD_9o-srcIhHR2DLM0wrx7e-qsFdrFhDyidZIGLHY_8pFeVMw"
        }
      ]
    }
    mosip.esignet.discovery.key-values=
    
    mosip.esignet.openid.scope.claims=
    @ConditionalOnProperty(value = "mosip.esignet.integration.key-binder", havingValue = "mock-keybinder-service")
    @Component
    @Slf4j
    public class MockKeyBindingWrapperService implements KeyBinder {
        //Implement keybinder methods
    }
    "purpose": {
      "type": "login",
      "title": { "eng": "Login using eSignet", "@none": "" },
      "subTitle": { "eng": "Please choose the login option", "@none": "" }
    }
    "purpose": {
      "type": "verify",
      "title": {
        "eng": "Verify your identity",
        "@none": ""
      },
      "subTitle": {
        "eng": "Authenticate using your preferred method",
        "@none": ""
      }
    }

    master branch

    All workflows necessary to build the project is kept here

    depends on eSignet version

    Helm helps you manage Kubernetes applications - helps define, install, and upgrade even the most complex Kubernetes application. Charts are easy to create, version, share, and publish — so start using Helm and stop the copy-and-paste.

    Java SE 11

    OpenJDK 11

    Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible.

    Oracle Binary Code License

    Spring Framework

    2.3.6

    Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform.

    Apache License 2.0

    Lombok

    1.18.24

    Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.

    Lombok License

    Logback

    1.2.3

    Logback is a logging framework that provides a fast, reliable, and highly configurable solution for generating logs in Java applications.

    Logback License

    openapi

    1.6.9

    The OpenAPI Specification is a specification language for HTTP APIs that provides a standardized means to define your API to others.

    Apache License 2.0

    kernel-keymanager-service (MOSIP)

    1.2.1.0

    The Key Manager Service provides secure storage, provisioning and management of secret data. It provides all the cryptographic operations like encryption/decryption and digital signature/verification making one trust store for all partner trust path validation.

    Mozilla Public License 2.0

    React JS

    18.2v

    React lets you build user interfaces out of individual pieces called components.

    MIT License

    Postgres

    15

    PostgreSQL also known as Postgres, is a free and open-source relational database management system (RDBMS) emphasizing extensibility and SQL compliance.

    OpenSource License

    Redis

    17.3.14

    Redis is a open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker. Redis can be replaced with any cache compatible with spring-cache.

    BSD License

    Kafka

    18.3.1

    Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.

    Maven

    3.6

    Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.

    Apache License 2.0

    Docker

    20.4 and above

    Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in packages called containers.

    OpenSource License

    npm

    18-alpine

    npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency conflicts intelligently.

    JUnit

    JUnit is a unit testing framework for the Java programming language.JUnit has been important in the development of test-driven development, and is one of a family of unit testing frameworks which is collectively known as xUnit that originated with SUnit.

    Eclipse Public License 1.0

    Newman

    Newman is a command-line tool that allows you to run Postman collections and automate API tests. It is ideal for integrating API testing into CI/CD pipelines and provides detailed test reports for automated workflows.

    Apache License 2.0

    Postman

    Postman is an API platform that simplifies the API lifecycle and streamlines collaboration. You can browse the largest network of public APIs, create and share your own workspaces, and access governance rules for API quality.

    Overview

    The 1.3.0 version of eSignet focuses on launching new features in authentication modes and support for Sign-up service:

    1. Password based Authentication

      We are thrilled to share that eSignet has expanded its authentication capabilities with the introduction of a password-based authentication factor which is a robust and reliable authentication factor secure with Captcha.

    2. Support for Sign-up service

      Users now have the convenience of registering through our Sign-Up Service, seamlessly integrated with the ID repository without complete deployment of MOSIP Identity. In isolation with the Sign-Up Service, efficiently manages user registrations.

    3. Fixes for known VCI issues from v1.2.0

    Features Included

    Below are the features available in the release:

    • Login with password

    • Sign-up service

    Repositories Released

    Repository Released
    Tags

    keymanager

    id-authentication

    Artifactory-ref-impl

    mosip-config

    mosip-infra

    mosip-functional-tests

    For details on deployment, refer to the helm charts in the eSignet repository.

    Documentation

    • Feature Documentation

    • Integration Guides

    • End User Guide

    • API Documentation

    In real-world deployments, eSignet can be configured to work with national ID systems or other identity providers as per the country’s implementation and integration requirements.

    Understanding Discovery Endpoints

    A discovery endpoint is a standard part of the OpenID Connect (OIDC) specification. It provides a metadata document (commonly located at /.well-known/openid-configuration) that allows relying parties (RPs) to automatically discover key configuration details for integrating with the identity provider (IdP).

    Each discovery document mainly includes:

    1. Authorization, Token, and UserInfo endpoint URLs

    2. Supported scopes, claims, and grant types

    3. Public keys for token signature validation

    4. Supported authentication methods and response types

    For more details refer .

    Why Discovery Endpoints Matter for Relying Parties

    For developers and integrators, discovery endpoints simplify setup by:

    1. Automating configuration: No need to hardcode or manually maintain endpoint URLs.

    2. Ensuring consistency: RPs always use up-to-date endpoint details published by eSignet.

    3. Reducing errors: Helps avoid misconfigurations in authorization or token flows.

    Discovery Endpoints for Mock ID and MOSIP ID Integration

    1. Mock ID Integration

    Use this option to integrate with a Mock ID system, which is designed to simulate a real ID system for testing and development purposes.

    Please refer here for the Mock ID discovery endpoints.

    Purpose:

    1. Enables developers to test authentication flows safely.

    2. Returns claims and responses similar to production with mock user data.

    3. Ideal for validating OIDC client configuration and redirect flows.

    2. MOSIP ID Integration

    Use this option if you want to use a MOSIP ID for your use case demonstrations or integration testing.

    Please refer here for the MOSIP ID discovery endpoints.

    Purpose:

    1. Connects to the live MOSIP identity system for real user authentication.

    2. Returns genuine user claims and ID tokens after successful login.

    3. Suitable for end-to-end verification before deployment.

    To get started with integration. and onboard your client to eSignet please refer to this page

    Mock ID
    MOSIP ID
    MOSIP Collab environment

    v1.5.1

    Release Number: v1.5.1(Patch)

    Release Date: 24th Feb, 2025

    Overview

    We are excited to announce eSignet v1.5.1, which resolves critical issues to improve user experience and system functionality. Key fixes include IDT authentication, KYC slot availability, and an updated README.md file for the docker compose setup of the signup service. These updates ensure more reliable and efficient access to services.

    Major Highlights

    1. Fixed bug in IDT authentication: Resolved issues related to invalid individual ID handling, including incorrect individual IDs provided in the request body.

    2. Reused Challenge Authentication: Added validations for reused challenge IDT(ID token)-based authentication, ensuring it now functions correctly.

    3. Periodic Slot Availability Checks in UI: Added support for periodic slot availability checks during the loading screen process, based on configuration.

    Bug Fixes

    • Several known issues from v1.5.0 have been resolved to improve platform stability. A detailed list of fixes is available .

    We believe this release will greatly improve eSignet's security, efficiency, and user experience.

    Thank you for your continued support!

    Key Known Issues

    Jira Issue
    Summary

    Please refer to for the list of all known issues.

    Repositories Released

    Repository Released
    Tags

    Compatible Modules

    Module/Repository
    Compatible Version

    DB Changes

    eSignet

    • Changed public_key column data type to JSONB in the client_details table. Please refer for details.

    eSignet mock services

    • The length limit on the identity_json column has been removed from the identity database. Please refer for details.

    Config Changes

    eSignet mock services

    • Introduced json schema based validation. Below two properties are added:

      1. mosip.mock.ida.identity.schema.url

      2. mosip.mock.ida.update-identity.non-mandatory.fields

    Please refer for details.

    Documentation

    v1.4.1

    Release Number: v.1.4.1

    Release Date: 15th July, 2024

    Overview

    This release introduces new features centered on Verifiable Credentials (VC) issuance plugins related to Sunbird RC, enhances configuration capabilities for Knowledge-Based Identification (KBI), and addresses critical known issues from previous versions.

    Features

    1. Features included

    We have developed two new plugins to support the issuance of verifiable credentials (VC) by authenticating users through Knowledge-Based Identification (KBI) using the Authenticator plugin. These enhancements are detailed below:

    a.

    • Implementation of the Authenticator plugin to enable Knowledge-Based Identification (KBI) within Sunbird RC.

    b.

    • Implementation of the VC Issuance plugin to facilitate the issuance of verifiable credentials within Sunbird RC.

    c. .

    • eSignet UI now supports KBI form configuration, making it easier to set up and manage KBI-based identification.

    For more information on KBI, please refer to the

    Note: The newly developed plugins are independent and can be adapted to various use cases that utilize Knowledge-Based Identification. An example use case like Insurance Card VC Issuance demonstrates how a user can be issued a verifiable credential using the registry configured with KBI.

    Bug Fixes

    Fixes from v1.4.0:

    • Improved Input Field Validations: Enhanced input field validations using regex implementation.

    • User-Friendly Error Messages: Improved error messages for better user experience.

    Fixes from v1.3.0:

    • eSignet Service Fixes: Critical and major bug fixes related to the eSignet service.

    • eSignet Signup Service Fixes: Critical and major bug fixes related to the eSignet Signup service.

    For a complete list of all bugs addressed in this release, please refer to the .

    Known Issues

    • Key Known Issue:

    Jira Issue
    Issue Description

    Please refer to for the list of all known issues.

    Repositories Released

    Repository Released
    Tags

    Note: digital-credential-plugins was released as part of v1.4.0, and is compliant with v1.4.1.

    For details on deployment, refer to the in the eSignet repository.

    Documentation

    Test Report

    Testing Scope

    The scope of testing is to verify fitment to the specification from the perspective of

    ● Functionality

    ● Deployability

    ● Configurability

    ● Customizability

    Verification is performed not only from the end user perspective but also from the System Integrator (SI) point of view. Hence, the Configurability and Extensibility of the software is also assessed. This ensures the readiness of software for use in multiple countries. Since MOSIP is an “API First” product platform, the Verification scope required comprehensive automation testing for all the MOSIP APIs. An automated Test Rig is created for the same.

    Test Approach

    Persona based approach has been adopted to perform the IV&V, by simulating test scenarios that resemble a real-time implementation.

    A Persona is a fictional character/user profile created to represent a user type that might use a product/or a service in a similar way. Persona based testing is a software testing technique that puts software testers in the customer's shoes, assesses their needs from the software, and thereby determines use cases/scenarios that the customers will execute. The persona's needs may be addressed through any of the following.

    ● Functionality

    ● Deployability

    ● Configurability

    ● Customizability

    The verification methods may differ based on how the need was addressed.

    For regression check, “MOSIP Test Rig” - an automation testing suite - is indigenously designed and developed for supporting persona based testing. MOSIP Test Rig covers the end to end test execution and reporting. The end to end functional test scenarios are written starting from pre-registration, to the creation of the packet in the registration center, processing the packet through the registration process, generating UIN, and authenticating identity using IDA through various permutations and combinations of cases being covered. MOSIP Test Rig will be an open source artifact that can also be enhanced and used by countries to validate the SI deliveries before going live. Persona classes include both negative and positive personas. Negative persona classes include users like Bribed Registration Office, Malicious Insider, etc. The needs of positive persona classes must be met, whereas the needs of negative persona classes must be effectively restricted by the software.

    Verified Configuration

    Verification is performed on various configurations as mentioned below

    ● Default configuration - with 7 Lang (English/Khmer/Hindi/Kannada/Tamil/Arabic/French).

    Main Features Tested:

    • Signup Portal

    • Login with Password

    • Forgot Password

    • Login with OTP

    Feature Health

    Test Execution Statistics

    Functional Test Results

    Below are the test metrics by performing functional testing using mock MDS, mock Auth, and mock ABIS. The process followed was black box testing which based its test cases on the specifications of the software component under test. The functional test was performed in combination with individual module testing as well as integration testing. Test data were prepared in line with the user stories. Expected results were monitored by examining the user interface. The coverage includes GUI testing, System testing, End-To-End flows across multiple languages and configurations. The testing cycle included the simulation of multiple identity schema and respective UI schema configurations.

    Total
    Passed
    Failed
    Skipped

    Test Rate: 99% with Pass rate: 97%

    Here is the detailed breakdown:

    1. API Based Testing - eSignet

    Total Test Cases: 1601

    • Passed - 1555

    • Failed - 44

    • Skipped - 2

    1. UI Based Testing

    Total Test Cases: 664

    • Passed - 636

    • Failed - 15

    • Skipped - 13

    API Testrig Results for eSignet and Mimoto:

    API Based Testrig - eSignet

    Total Test Cases: 1116

    • Passed - 1111

    • Failed - 3

    • Skipped - 2

    Note: In API Based testing, 2 test cases are marked as skipped as they were not automated.

    In UI Based testing, 13 test cases are marked as skipped as they were enhancement test cases.

    Detailed Test Metrics

    Below are the detailed test metrics by performing manual/automation testing. The project metrics are derived from Defect density, Test coverage, Test execution coverage, test tracking, and efficiency.

    The various metrics that assist in test tracking and efficiency are as follows:

    ● Passed Test Cases Coverage: It measures the percentage of passed test cases. (Number of passed tests / Total number of tests executed) x 100.

    ● Failed Test Case Coverage: It measures the percentage of all the failed test cases. (Number of failed tests / Total number of test cases executed) x 100.

    Sonar Report:

    eSignet:

    eSignet Signup Repo:

    eSignet Authentication

    A Modern and Inclusive Digital Identity Authentication Solution

    Overview

    eSignet Auth is a modular, standalone identity authentication service designed to enable secure and flexible user verification across digital ecosystems. Built on open standards, it implements OAuth 2.0 and OpenID Connect protocols, functioning as both an authorization server and a resource server.

    1. Designed for Inclusivity

    eSignet Auth ensures that digital authentication is accessible and adaptable for all, regardless of device type or user capability.

    • Multiple Authentication Factors Supports a variety of methods including OTP (for feature phones), biometrics (iris, face, fingerprint), and wallet-based face authentication (for smartphone users). These modes ensure inclusive access across different user demographics and contexts.

    • Customizable Authentication Workflows Flexible by design, eSignet Auth can be tailored to meet country-specific, sector-specific, or application-specific requirements. New authentication methods can be easily added and existing flows modified without major system changes.

    2. Standards-Based ID Authentication with High Assurance

    eSignet Auth delivers secure identity verification through a standards-compliant and assurance-driven approach.

    • OAuth 2.0 and OpenID Connect Based Uses established OAuth 2.0 flows and OpenID Connect for secure, token-based identity authentication, enabling seamless and reliable integration with existing systems.

    • Support for High Assurance Biometrics Enables robust identity authentication using iris, face, or fingerprint recognition. These high-assurance modalities are ideal for accessing sensitive services such as healthcare, financial services, and government platforms.

    This combination of standards compliance and biometric authentication ensures strong, verifiable digital identities with configurable assurance levels.

    3. How It Builds Trust

    Trust is foundational to eSignet Auth’s architecture, achieved through strong privacy controls, consent-driven design, and secure token handling.

    • Consented User Data Sharing Personal data is shared only after explicit, informed user consent. The consent flow is embedded into the authentication process and mandatory for data access.

    • No Data Storage eSignet Auth does not store any personally identifiable information (PII). It acts solely as a verification and authentication layer, reducing exposure to privacy risks.

    • Prevention of Unwanted Profiling Issues relying-party-specific user tokens for each relying party, ensuring that user activity cannot be tracked or correlated across services—thus preserving privacy and stopping cross-service profiling.

    4. Seamless Integration Across Ecosystems

    eSignet Auth is built for flexibility, allowing it to plug into various components across digital identity and service delivery ecosystems.

    • Compatible with Any ID System Integrates easily with any centralized or federated identity system. Its standards-based framework allows it to work with a wide variety of ID registries and data structures.

    • Connects with Any Relying Party (Service Portal) Service providers—such as banks, government departments, healthcare portals, and telecom services—can authenticate users through eSignet Auth with minimal integration effort. The use of standard APIs and protocols enables quick and secure onboarding.

    This ecosystem-agnostic design ensures that eSignet Auth can serve as a unifying layer for identity authentication across sectors.

    5. Summary

    is a powerful, secure, and inclusive authentication module that can be deployed as part of a digital ID system or independently.

    It offers:

    • Inclusive access through multiple, customizable authentication methods

    • Secure and standards-compliant identity verification using OAuth 2.0 and OpenID Connect

    • High-assurance options via biometric authentication (iris, face, fingerprint)

    • Consent-driven data handling with no storage of user PII

    Whether used by governments, enterprises, or technology providers, eSignet Auth delivers a trusted, flexible, and future-ready solution for digital identity authentication.

    Please take a moment to watch the video below to explore valuable insights into eSignet and its wide array of powerful features!

    Documentation

    Register Yourself

    • Now you can self generate your own UIN Credential using the Collab environment.

      • Click on the Get UIN button located at the top-right corner of the page. This will open the Self Registration Form, Alternatively, you can simply click on this link to self register. You need to duly fill the self registration form.

      • On successful registration the UIN is sent to you over the email you used for registration, For more details you follow the Generating Demo Credentials Guide.

    You will be able to explore eSignet’s capabilities and experience seamless authentication through various channels.

    Step-by-Step Process

    To experience the various methods of login and authentication in the demo health services portal using eSignet, follow the detailed instructions below:

    Step 1: Access the health services portal

    Navigate to the relying party’s demo portal in the Collab environment, and click on Sign In with eSignet.

    Step 2: Explore the various authentication mechanisms

    OTP Authentication

    Once you receive your UIN/VID, you can navigate to the and try authenticating using your UIN/VID and the default OTP, i.e. "111111" (six ones).

    A detailed step-by-step guide on how to log in with OTP using eSignet is also available .

    Note: Please use 111111 as the OTP, for any OTP-based feature in the Collab environment.

    Biometrics-based Authentication

    Mock biometrics setup

    • To enable biometrics-based login, ensure that your machine is running Windows.

    • Make sure you have Java 11 or a higher version installed on your computer.

    • Download the collab-mock-mds-auth.zip file from the link provided .

    • Unzip the downloaded file to extract its content.

    Experience the process of logging in using biometrics, by following the instructions provided .

    Note: Biometric-based login with Mock MDS is currently unavailable in the Collab environment. Stay tuned to the MOSIP for updates!

    Authentication using Wallet

    For our testing, we have integrated with , which we can use as an authenticator.

    To get your credentials onboarded on Inji and enable them for authentication, follow the below steps,

    1. Install the Inji APK on your mobile device using

    2. Download your credentials on Inji. For details on how to download the credential, click (Refer to step 3 in the guide)

    3. Ensure that you have activated your credentials for online login. This step is crucial for wallet-based authentication to work smoothly. For a comprehensive guide on how to activate the VC for online login, refer

    Once you are done with the above steps, you can use the Inji wallet to log into the health portal. The detailed steps to log into the health portal using the Inji wallet are available .

    Additional Video Resource

    • Watch this informative video to gain insights into eSignet.

    • Explore the video for a practical demonstration of the authentication process.

    • Watch - A quick comprehensive guide for local implementation for eSignet versions up to 1.4.2

    • Click for detailed information about eSignet.

    By adhering to these guidelines and making use of the available resources, you will be able to smoothly experience the different methods of login and authentication offered by eSignet. This will guarantee secure and efficient access to the services you require.

    Get in Touch

    If you require any assistance or encounter any issues during the testing and integration process, kindly reach out to us through the support mechanism provided below.

    • Navigate to .

    • Provide a detailed description of the support you require or provide detailed information about the issue you have encountered, including steps to reproduce, error messages, logs, and any other relevant details.

    Login ID Configuration in eSignet

    The eSignet system introduces enhanced flexibility in configuring login ID types to better align with country-specific needs and business requirements. This allows implementation teams to tailor login experiences based on regional standards, supported ID types, and UI preferences.

    Overview

    eSignet now supports dynamic configuration of login identifiers, giving implementation teams the ability to:

    • Enable or disable specific login types (e.g., Mobile Number, NRC ID, Email, VID).

    • Display country-specific prefixes dynamically.

    • Configure SVG icons to visually represent each login method in the UI.

    By default, VID is shown as the primary login ID. However, this can be extended and customized through configuration.

    Country-Specific Configuration

    Login options available to users can vary depending on the country or deployment region. As for an example:

    • A Mobile Number login can display country-specific prefixes like +91 (India), +855 (Cambodia), or +1 (USA).

    • These prefixes are shown dynamically in the UI based on the selected login ID type.

    This ensures a localized and intuitive login experience for users around the world.

    SVG Icon Configuration

    Each login ID type can be associated with a custom SVG icon that visually represents the identifier in the login interface.

    • These icons are displayed next to their corresponding input fields.

    • Icons can be configured to match branding and UI themes.

    Configuration Format

    All login ID types and their respective properties are defined in the eSignet configuration file:

    File: application-default.properties Key: mosip.esignet.ui.config.login-id.options

    Example Configuration


    Summary

    With the new login ID configuration feature, eSignet allows:

    • Full control over which login types to show.

    • Custom display of country codes for mobile login.

    • Visual customization using SVG icons.

    • Easy configuration through application-default.properties.

    This level of flexibility makes eSignet highly adaptable for diverse identity systems and regional deployment requirements.

    Signup and Login with OTP for Verified Claims

    Sign up and Try Video eKYC

    Use the eSignet Signup service to register and create your user profile. Follow the steps below to complete registration and experience the video eKYC verification flow.

    1. The user navigates to the portal.

    2. They click on the Sign in with eSignet to initiate the registration process.

    The login screen appears, displaying the available login options for the user.

    1. To begin the signup process, click on Sign up with Unified Login, located at the bottom of the page.

    1. Enter your 8-9 digit mobile number in the provided field and click Continue to proceed.

    1. Enter the OTP received on the mobile number and click Verify.

    1. A success message confirming the mobile number verification is displayed. Click Continue to proceed with setting up your account.

    Clicking Continue redirects the user to a page where they can enter basic personal details to set up their account.

    1. Enter your name and create a password. Ensure you agree to the terms and conditions by selecting the checkbox, then click Continue to complete the account setup.

    1. The user is successfully registered, and a confirmation message is displayed. The user can now log in using their registered mobile number. Click Login to proceed.

    1. The login screen appears, displaying the available login options for the user. To proceed, the user selects the Login with OTP option.

    1. Enter the mobile number used during account setup in the previous steps and click Get OTP.

    Note: On the screen, the label for the text field is displayed as ‘UIN/VID’. Enter your mobile number in the text box to proceed.

    1. The user receives the OTP through their registered channel (either via phone or email). Enter the valid OTP in the provided field and click Verify to proceed.

    1. An attention screen with a list of claims is displayed and the user is asked to confirm to proceed with eKYC. Click on Proceed to continue.

    1. The user is now redirected to the page where the steps for the eKYC process are listed. Click on the Proceed option to continue.

    1. Choose an eKYC provider and click on the Proceed option.

    1. Select the I Agree to the ‘Terms & Conditions’ checkbox and click on the Proceed option to continue.

    1. A video preview is displayed along with general guidelines to be followed during the video eKYC process.

    Note: Please ensure that the device camera is enabled.

    1. The eKYC process is initiated please follow the instructions on the screen to complete the process.

    1. A verification success message is displayed.

    1. Once the verification process is completed successfully. A consent screen is displayed to the user to confirm the sharing of the user's information. Click on Allow to continue.

    1. Once the consent is given the user data is shared with the service provider and the user lands on the home page of the service portal with user details displayed.

    This completes the eKYC verification process for the user.

    Components - eSignet

    Connecting secure components for seamless identity verification.

    The image below represents a block diagram of eSignet, illustrating various components, layers, and external systems that work together to provide secure identity verification.

    eSignet Components

    eSignet Components

    Relying Party System

    The Systems depend on identity providers, such as eSignet, to authenticate and verify the identities of users before granting them access to protected resources or services.

    Clients utilizing OpenID Connect within the OAuth 2.0 framework are commonly referred to as Relying Parties (RPs).

    In the case of VC issuance, they are simply OAuth 2.0 clients. To ensure enhanced security, eSignet exclusively supports confidential clients.

    Digital Wallet

    are software-based platforms used to securely store and share the certified credentials of the wallet holder. Stored credentials can be used for login with the eSignet, once the credentials are binded with the RSA key pair and the corresponding public key is shared with eSignet.

    To know more about the key binding process please refer to .

    eSignet UI

    This is the user interface component of eSignet, developed using React JS. Its main functionality is to handle user authentication and obtain user consent. eSignet UI seamlessly integrates with the UI REST endpoints provided by esignet-service.

    • One notable feature of the eSignet UI is its support for multiple languages.

    • eSignet UI also offers QR code-based login with support for multiple digital wallets.

    • In addition, eSignet UI is compatible with MOSIP SBI 2.0 for biometric capture.

    • Furthermore, the eSignet UI provides flag-based captcha validation for OTP login.

    Note: Here are a few frequently asked questions on the eSignet UI.

    eSignet Service

    This service is the primary backend Spring Java application that incorporates various layers and integrates with other components mentioned on this page.

    1. Core components: The eSignet core library is used to manage core service interfaces, constants, exceptions, validators, and utility methods.

    2. Service layer: This layer represents the implementation of the interfaces defined in the eSignet core library. Each protocol implementation is a separate service, such as the complete OIDC protocol implementation being part of the oidc-service and VCI protocol implementations residing in the vci-service.

      • Service modules utilize caching to enhance transaction access and update speeds, as well as to prevent the need for persistent storage of transaction details.

    All plugin interfaces are defined in the module.

    Sign up Portal

    The provides a user-friendly registration interface that allows users to securely create and manage accounts.

    Identification System (ID system)

    The ID System is a fundamental identity repository that stores demographic and biometric details (if applicable).

    • Storage Options: This can be a database or a dedicated system.

    • Verification & Data Sharing: Facilitates identity verification and enables secure data exchange with eSignet.

    Relying Party Onboarding

    This guide helps the developers of the relying party to get started with their development environment.

    Pre-requisites

    Before integrating with eSignet, ensure the following setup is completed:

    1. Prepare Your Development Environment

    • Select your preferred technology stack (e.g., PHP, Python, Java, Node, Kotlin, Swift, etc.).

    • Choose an appropriate OpenID Connect client library for your selected stack. (Refer to the library list here.)

    2. Plan for UserInfo JWT Handling

    • eSignet returns the UserInfo response as a signed or signed-and-encrypted JWT.

    • Choose a compatible JWT plugin to decrypt, verify, and parse the UserInfo JWT.

    3. Generate and Manage Cryptographic Keys

    • eSignet supports only confidential clients using the private_key_jwt client authentication method.

    • Generate a key pair and store the private key securely in password-protected, hardened storage (machine, vault, HSM).

    • Share the public key with eSignet in JSON Web Key (JWK) format.

    Only RSA key format is currently supported; additional key formats are planned.

    4. Design Your Callback API

    • The callback API is the endpoint to which eSignet redirects the user’s browser after authentication success or failure.

    • Ensure the callback can render a user interface promptly, keeping the user informed of the authentication result.

    • On successful authentication, the user is redirected with an authorization code.

    • On failure

    Onboarding Your Relying Party (RP) as an OIDC Client with an ID Provider

    To onboard your application or service as an OpenID Connect (OIDC) client with an Identity Provider (IDP) such as eSignet, follow the steps below. These steps ensure that your RP is registered correctly and can request user authentication and claims securely.

    1. Prepare Your Public Key

    Before registration, generate a key pair and have your public key ready. This public key will be shared with the ID provider to establish trust and enable secure communication.

    2. Request Client Registration

    Contact the eSignet provider (or relevant ID provider) and provide the following details:

    • Public Key: The same public key generated earlier.

    • Client/Application Name: This name will be displayed to users on the eSignet authentication and consent screens.

    • Claims (Attributes) Required: Specify the list of user attributes your application needs.

      • Clearly indicate

    3. Submit Application Branding

    To provide a seamless user experience, submit the following for display during authentication:

    • Application Logo

    • Organization Logo

    These visuals will appear on the eSignet authentication and consent pages.

    4. Define Callback URLs (Redirect URIs)

    Specify the redirect URIs that the ID provider will use to return authentication responses. For development and QA environments, use the following patterns:

    Supported for Development/QA:

    • http://localhost:<portnumber>/*

    • http://127.0.0.1:<portnumber>/*

    • http://<your-server-ip>:<portnumber>/*

    Wildcard patterns (*) are acceptable for development but should be avoided in production due to security risks._

    Unsupported URL Patterns:

    • \\*

    • http* (invalid wildcard usage)

    • https://* (invalid wildcard usage)

    Redirect URIs can either be fully qualified URLs or partial URLs with wildcards. Allowing partial URLs with wildcards provides flexibility for clients, enabling them to use multiple URLs by changing only certain paths or query parameters without frequently updating the client configuration. However, when using the redirect URI in the authorize API call and the token API call, it must be a fully qualified URL and must be identical in both calls. If the redirect URI differs between these calls, an "invalid assertion" error will occur. Additionally, if the redirect URI does not match any of the registered redirect URIs, the request will fail with an "invalid redirect URI" error.

    5. Await Client ID

    Once the required information is submitted, the ID provider will process your registration and issue a Client ID. This ID will uniquely identify your application in all future authentication requests.

    Test Report

    Scope

    The scope of testing is to verify fitment to the specification from the perspective of:

    • Functionality

    v1.2.0

    Release Name: eSignet VCI

    Release Number: v1.2.0

    Release Date: 11th December, 2023

    Overview

    The 1.2.0 version of eSignet focuses on the feature.

    Deployment Architecture

    Architecture Overview

    The below diagram illustrates the deployment architecture of the eSignet service with secure, scalable, and monitored infrastructure components.

    eSignet Signup

    Objective & Rationale:

    In today’s digital world, secure and accessible identity verification is key to connecting people with essential services like healthcare, education, and government programs. While the eSignet Authentication module solves the identity verification, there is still a need to address the onboarding of users in non-digital environments. For example, several countries have good coverage on non-digital ID issuance, but would like to enable these users to obtain a digital identity. In certain countries, there are several ID’s that together provide an overall coverage rather than a single ID. In most of the case, the new on-field registration is not a good choice due to the cost and time-consuming methods. Empowering a voluntary program to self-register for a digital identity can work seamlessly in these cases. The eSignet’s Signup Module, a core component of the eSignet platform, offers a seamless and inclusive way for individuals to establish their digital identities. By prioritizing self-registration and progressive verification, the Signup module ensures that everyone can participate in the digital ecosystem regardless of background or access to technology. In this document, we dive into why and how eSignet’s signup process promotes inclusion, supports self-registration, and builds trust through its innovative assurance model.

    Code of Conduct

    Preamble

    eSignet was created to foster an open, innovative, and inclusive community around open source and open standards. To clarify expected behaviour in our communities, we have adopted the Contributor Covenant. This code of conduct has been adopted by many other open-source communities, and we feel it expresses our values well.

    OpenID Provider Configuration Well-Known

    Overview:

    eSignet's openid-configuration well-known endpoint provides metadata in a standardized JSON format, following the . This endpoint exposes information such as authentication endpoints, supported flows, and capabilities, enabling relying parties to dynamically discover and integrate with eSignet securely.

    Use different key pairs for development, test, and production—never reuse keys across environments.
  • Rotate keys every 6–12 months, or immediately if compromised.

  • The generated key pair must default to "signing" usage.

  • , the user is redirected
    without a code
    , but with an
    error code
    .
  • The relying party must handle the callback response appropriately before allowing the user to proceed.

  • mandatory
    vs.
    optional
    claims.
  • Claim values and formats can be referenced from the eSignet .well-known configuration endpoint.

  • my.phone.app://oauth/* (For mobile apps with deep linking)
    https://domain*
  • residentapp://*

  • Our Pledge

    We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, colour, religion, or sexual identity and orientation.

    We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

    Our Standards

    Examples of behaviour that contributes to a positive environment for our community include:

    • Demonstrating empathy and kindness toward other people

    • Being respectful of differing opinions, viewpoints, and experiences

    • Giving and gracefully accepting constructive feedback

    • Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience

    • Focusing on what is best, not just for us as individuals, but for the overall community

    Examples of unacceptable behaviour include:

    • The use of sexualized language or imagery, and sexual attention or advances of any kind

    • Trolling, insulting or derogatory comments, and personal or political attacks

    • Public or private harassment

    • Publishing others' private information, such as a physical or email address, without their explicit permission

    • Other conduct which could reasonably be considered inappropriate in a professional setting

    Enforcement Responsibilities

    Community leaders are responsible for clarifying and enforcing our standards of acceptable behaviour and will take appropriate and fair corrective action in response to any behaviour that they deem inappropriate, threatening, offensive, or harmful.

    Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct and will communicate reasons for moderation decisions when appropriate.

    Scope

    This Code of Conduct applies within all community spaces and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

    Enforcement

    Instances of abusive, harassing, or otherwise unacceptable behaviour may be reported to the community leaders responsible for enforcement at MOSIP. All complaints will be reviewed and investigated promptly and fairly.

    All community leaders are obligated to respect the privacy and security of the reporter of any incident.

    Enforcement Guidelines

    Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:

    1. Correction

    Community Impact: Use of inappropriate language or other behaviour deemed unprofessional or unwelcome in the community.

    Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behaviour was inappropriate. A public apology may be requested.

    2. Warning

    Community Impact: A violation through a single incident or series of actions.

    Consequence: A warning with consequences for continued behaviour. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.

    3. Temporary Ban

    Community Impact: A serious violation of community standards, including sustained inappropriate behaviour.

    Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.

    4. Permanent Ban

    Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behaviour, harassment of an individual, or aggression toward or disparagement of classes of individuals.

    Consequence: A permanent ban from any sort of public interaction within the community.

    Attribution

    This Code of Conduct is adapted from the Contributor Covenant, version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.

    Community Impact Guidelines were inspired by Mozilla's code of conduct enforcement ladder.

    For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.

    here

    Locate the run_auth.bat file within the extracted folder.

  • Double-click on the run_auth.bat file to start the authentication MDS.

  • Health Services
    health portal
    here
    here
    here
    Community
    MOSIP's digital wallet- Inji
    this guide to set up and use Inji
    here
    here
    here
    here
    eSignet Online Authentication Demo
    Running eSignet Locally
    here
    Community
    Apache License 2.0
    Artistic License 2.0
    kattu (MOSIP)
    Helm Chart (MOSIP)
    Apache License 2.0

    esignet

    1.3.0

    esignet-mock-services

    0.9.2

    id-repo

    1.2.0.1-B3

    esignet-signup

    1.0.1

    mosip-openid-bridge

    1.2.0.1-B4

    mosip-openid-bridge

    1.2.0.1-B4-lite

    QA Report
    1.2.0.1-B4
    1.2.0.1-B6
    1.2.0.1
    1.3.0-ES
    1.3.0-ES
    1.3.0-ES
    SubirdRC Integration (Using Inji App)
  • SubirdRC Integration (Using InjiWeb)

  • 2265

    2191

    59

    15

    Feature Health
    eSignet Sonar Report
    Sign in with eSignet
    Enter Mobile Details
    Verify with OTP Page
    Verification Sucess Page
    Registered Confirmation Message
    Get OTP Page
    Enter OTP Page
    Attention Page
    eKYC Process Page
    eKYC Provider Page
    Terms and Conditions Page
    Video Preview Page
    eKYC Process is Initiated Page
    Left Side of the Face Scan
    Right Side of the Face Scan
    Verification Success Message Page
    eSignet Allow Page
    Firewall

    A firewall is a network security device that monitors and filters incoming and outgoing network traffic based on an organization's established security policies. It protects against outside cyberattacks by shielding the network from malicious or unnecessary network traffic. All incoming traffic from the internet is routed through the firewall.

    Load Balancer

    A load balancer is a network device or service that evenly distributes incoming network traffic across multiple servers or resources. It operates based on predetermined rules or algorithms and helps optimize the use of these resources. The primary purpose of a load balancer is to ensure that no single server becomes overwhelmed with traffic, thereby improving performance, availability, and reliability for users accessing a particular service or application.

    Additionally, we use it in the following cases:

    1. SSL termination

    2. Proxy pass

    3. TCP communication

    4. UDP communication

    5. Reverse Proxy

    IAM

    Wireguard is used as a trusted network extension to provide secure access to control and monitoring panels for operational team members, making sure that restricted APIs are not publically accessible.

    The internal IAM system is used to manage access control for the operation team and client management API calls from client management systems

    Deployment Layers

    Deployment layers can be sectioned into the below three sections.

    Application Cluster

    eSignet application services are deployed in the form of pods in the Kubernetes cluster.

    Artifactory Service

    This pod contains environment-specific libraries like HSM client and eSignet plugins. When the eSignet service pod starts, these libraries are downloaded from the artifactory and added to the application loader path.

    Config Server

    This pod is responsible for serving the external property files to application service pods. These property files are maintained in a private Git repository and the Config service acts more like a secure proxy.

    OIDC UI

    This pod will expose all the UI component files that are requested from the browser once the eSignet portal is accessed.

    eSignet Service

    This is the actual backend service that exposes all the RESTful API endpoints, which includes all endpoints related to OIDC, VCI, UI, and client management. This service has a plugin-based mechanism to integrate with the ID system for actual user verification. It also connects to the below cluster for various needs.

    PostgreSQL DB Cluster

    All the data related to client policies, consent, etc. are stored in this cluster. It should be a highly available cluster with necessary replication levels using solutions like Citus.

    Redis Cache Cluster

    All transactional caching needs are taken care of by the Redis cluster.

    HSM Cluster

    This cluster provides the necessary security to the cryptographic keys used in the application. Access to this cluster should be allowed only from a few selected nodes to control access and improve security.

    Note: Below additional Kubernetes-compatible tools are also configured into the Kubernetes cluster to take care of security and routing needs.

    Ingress Gateway

    An ingress Gateway is a load balancer operating at the edge of the mesh that receives incoming HTTP/TCP connections. It configures exposed ports, protocols, etc.

    Istio Service Mesh

    This is a service mesh used as an ingress gateway in the k8 cluster. Istio is used to manage the request routing in service-to-service communication. It can also help with service discovery, load balancing, failure recovery, metrics, and monitoring.

    Docker Registry

    Local docker registry is used to improve restart timings of containers where the images are configured to be pulled every time to the running node. It also helps with reducing the usage of internal bandwidth since images are caching within the setup.

    Kubernetes Secrets

    Kubernetes Secret is used for storing and managing sensitive information like DB passwords, keycloak secrets, etc.. that is required by application pods. It gives us more control over how sensitive information is used and reduces the risk of accidental exposure.

    Control Panel

    Tools in the Control Panel will be used by operations team members to manage the deployment and maintain the uptime in the Kubernetes cluster

    Rancher

    Rancher is a complete stack for managing containers. It addresses the operational and security challenges of managing multiple Kubernetes clusters while providing DevOps teams with integrated tools for running containerized workloads. Rancher is integrated with IAM for the authentication of users.

    Helm Chart

    Helm chart is a package manager for Kubernetes-based Objects. For each module, multiple related components are grouped and their deployment scripts are packaged as hosted helm charts, so each module can be installed and upgraded independently.

    Monitoring Panel

    Monitoring Panel will be used by operations team members to observe the health of various application pods and debug specific issues using application logs.

    Application logs and metrics are collected by Fluentbit and dumped into Elastic Search and Prometheus respectively.

    The application log data stored in elastic search is configured as reports using Kibana and can be used for searching logs when debugging application issues. The metric data stored in Prometheus are configured as charts in Grafana to continuously monitor the health of the environment and containers. Explicit notifications can be configured as alerts when the metrics reach a particular threshold.

    eSignet Deployment Diagram

    Lastly, the landing page of the eSignet UI showcases the available .well-known endpoints.

    How to enable or disable the captcha?

    Persistent storage is only used for OIDC client registration details.

  • Kafka is employed to support asynchronous operations during wallet-based logins.

  • Rest APIs: The eSignet-service module exposes REST endpoints for the functionality implemented in the service layer modules.

  • Key Manager

    • Key Manager is used for secure key management and cryptography functionalities required by the eSignet service component.

    • It can be integrated with an HSM (hardware security module) for the secure storage of keys.

    • Typically, Key Manager is run as a service, but it is used as a library in the eSignet Service to minimize the effort of managing extra containers.

    • It depends on the data layer for maintaining the metadata on keys.

  • Plugins: Integration points with external systems are designed to be pluggable, allowing easy integration with any ID system. The pluggable integration points are as follows:

    • Authenticator Plugin- for identity verification

    • Audit Plugin - for auditing all events

    • Key Binder Plugin - for key binding of a user and wallet

  • Relying Party
    Digital Wallets
    Key Binder Integration Guide
    How to enable multiple digital wallet support for authentication?
    How to configure the expected quality score, timeouts, and number of bio attributes to be captured?
    esignet-integration-api
    SignUp portal
    Open ID Provider Well Known Configuration

    Please refer below for more details.

    Parameter Details and Descriptions

    • issuer: The base URL or identifier of the OpenID Connect provider. The value comes from the configuration property mosip.esignet.discovery.issuer-id.

    • authorization_endpoint: The URL where the authorization request can be initiated.

    • token_endpoint: The URL where the token exchange occurs to obtain an access token.

    • userinfo_endpoint: The URL where additional user information can be requested.

    • introspection_endpoint: The URL where the token introspection can be performed to validate token information.

    • jwks_uri: The URL where the JSON Web Key Set (JWKS) can be retrieved. The JWKS contains the public keys used to verify ID tokens and other JWTs.

    • scopes_supported: The supported scopes that can be requested during the authentication process. The value comes from the configuration property mosip.esignet.supported.openid.scopes.

    • response_types_supported: The supported response types for the authorization request. The value comes from the configuration property mosip.esignet.supported.response.types.

    • response_modes_supported: The supported response modes for the authorization request. The value is ["query"], indicating that only the query response mode is supported.

    • token_endpoint_auth_methods_supported: The supported authentication methods for the token endpoint. The value is based on the configuration property mosip.esignet.supported.client.auth.methods.

    • token_endpoint_auth_signing_alg_values_supported: The supported signing algorithms for the authentication of the token endpoint. In this case, the value is ["RS256"], indicating that only the RS256 (RSA with SHA-256) algorithm is supported.

    • userinfo_signing_alg_values_supported: The supported signing algorithms for the user information endpoint. The value is ["RS256"], indicating that only the RS256 algorithm is supported for signing user information.

    • userinfo_encryption_alg_values_supported: The supported encryption algorithms for the user information endpoint. The value is ["RSAXXXXX"], suggesting that a specific encryption algorithm (represented as "RSAXXXXX") is supported. The actual algorithm should be provided.

    • userinfo_encryption_enc_values_supported: The supported encryption methods for the user information endpoint. The value is ["A128GCM"], indicating that only the A128GCM encryption method is supported.

    • id_token_signing_alg_values_supported: The supported signing algorithms for ID tokens. The value is ["RS256"], indicating that only the RS256 algorithm is supported for signing ID tokens.

    • claim_types_supported: The supported claim types. The value is ["normal"], suggesting that only normal claims are supported.

    • claims_parameter_supported: Specifies whether the claims parameter is supported in authorization requests. The value is true, indicating that the claims parameter is supported.

    • display_values_supported: The supported display values for the user interface. The value is based on the configuration property mosip.esignet.supported.ui.displays.

    • subject_types_supported: The supported subject types. The value is ["pairwise"], indicating that only pairwise subject types are supported.

    • claims_supported: The supported claims that can be included in ID tokens and user info responses. The value is a list of claim names, such as "iss", "sub", "acr", "name", etc.

    • acr_values_supported: The supported authentication context class references (ACR). The value is an empty object {}, indicating that no specific ACR values are supported.

    • request_parameter_supported: Specifies whether the request parameter is supported in authorization requests. The value is false, indicating that the request parameter is not supported.

    • ui_locales_supported: The supported user interface locales. The value is an empty object {}, suggesting that no specific UI locales are supported.

    • claims_in_verified_claims_supported: Supported verified claim names.

    OpenID Connect specification
    mosip.esignet.ui.config.login-id.options={
      {
        "id": "mobile",
        "svg": "mobile_icon",
        "prefixes": [
          { "label": "IND", "value": "+91", "maxLength": "", "regex": "" },
          { "label": "KHM", "value": "+855" },
          { "label": "USA", "value": "+1" }
        ],
        "postfix": "@phone",
        "maxLength": "",
        "regex": ""
      },
      {
        "id": "nrc",
        "svg": "nrc_id_icon",
        "prefixes": "",
        "postfix": "@NRC",
        "maxLength": "",
        "regex": ""
      },
      {
        "id": "vid",
        "svg": "vid_icon",
        "prefixes": "",
        "postfix": "@ID",
        "maxLength": "",
        "regex": ""
      },
      {
        "id": "email",
        "svg": "email_icon",
        "prefixes": "",
        "postfix": "@email",
        "maxLength": "",
        "regex": ""
      }
    }
    {
      "issuer": "https://esignet.collab.mosip.net",
      "authorization_endpoint": "https://esignet.collab.mosip.net/authorize",
      "token_endpoint": "https://esignet.collab.mosip.net/v1/esignet/oauth/v2/token",
      "userinfo_endpoint": "https://esignet.collab.mosip.net/v1/esignet/oidc/userinfo",
      "jwks_uri": "https://esignet.collab.mosip.net/v1/esignet/oauth/.well-known/jwks.json",
      "scopes_supported": [
        "profile",
        "email",
        "phone"
      ],
      "response_types_supported": [
        "code"
      ],
      "acr_values_supported": [
        "mosip:idp:acr:password",
        "mosip:idp:acr:generated-code",
        "mosip:idp:acr:linked-wallet",
        "mosip:idp:acr:biometrics"
      ],
      "userinfo_signing_alg_values_supported": [
        "RS256"
      ],
      "userinfo_encryption_alg_values_supported": [
        "RSAXXXXX"
      ],
      "response_modes_supported": [
        "query"
      ],
      "token_endpoint_auth_methods_supported": [
        "private_key_jwt"
      ],
      "token_endpoint_auth_signing_alg_values_supported": [
        "RS256"
      ],
      "id_token_signing_alg_values_supported": [
        "RS256"
      ],
      "claim_types_supported": [
        "normal"
      ],
      "claims_supported": [
        "name",
        "address",
        "gender",
        "birthdate",
        "picture",
        "email",
        "phone_number"
      ],
      "claims_locales_supported": [
        "en"
      ],
      "display_values_supported": [
        "page",
        "popup",
        "touch",
        "wap"
      ],
      "ui_locales_supported": [
        "en"
      ],
      "claims_in_verified_claims_supported" : [
      "name",
      "address",
      "gender",
      "birthdate",
      "picture",
      "email",
      "phone_number" 
      ]
    }
    Documentation:
    Updated the Sign-up Docker Compose README to ensure a smooth local setup for Sign-up services.

    kernel-auth-service

    kernel-otp-manager

    Sunbird

    ES-2222

    The user is not getting registered with an 8-digit UIN in MOSIP IDA.

    ES-2023

    Intermittent: Signup register and reset password are throwing errors but able to login.

    esignet

    v1.5.1

    esignet-signup

    v1.1.1

    esignet-mock-services

    v0.10.1

    esignet-plugins

    v1.3.1

    ID Authentication

    1.2.1.0

    ID Repository

    1.2.1.0

    kernel - core

    1.2.0.1

    kernel-notfication-service

    1.2.0.1

    kernel-idgenerator-service

    1.2.0.1

    kernel-auth-adaptor

    1.2.0.1

    here
    this link
    here
    here
    here
    API Documentation
    Integration Guides
    End User Guide
    QA Report

    digital-credential-plugins

    QA Report

    ES-903

    Intermittent issue faced in Biometric Login when used in certain organization/domain specific laptops.

    eSignet

    v1.4.1

    mosip-config

    v1.4.1-ES

    esignet-mock-services

    v0.9.3

    mosip-ref-impl/kernel

    v1.2.0.2

    artifactory-ref-impl

    v1.4.1-ES

    eSignet Signup

    v1.0.2

    Authenticator plugin implementation for KBI with Sunbird RC.
    VC Issuance plugin implementation for Sunbird RC.
    eSignet UI to support KBI form configuration
    KBI documentation
    Sunbird RC
    bug fixes list
    this link
    helm charts
    Feature Documentation
    Integration Guides
    End User Guide
    API Documentation

    Prevention of user profiling across services

  • Easy integration with any identity system or service provider

  • Open-source and vendor-neutral, ensuring no lock-in and full transparency

  • eSignet Auth
    Technology Stack
    Components
    Try It Out
    Integrate with eSignet
    Deployability
  • Configurability

  • Customizability

  • Verification is performed not only from the end-user perspective but also from the System Integrator (SI) point of view. Hence, the configureability and extensibility of the software are also assessed. This ensures the readiness of software for use in multiple countries. Since MOSIP is an “API First” product platform, the verification scope required comprehensive automation testing for all the MOSIP APIs. An automated Test Rig is created for the same.

    The key feature tested as a part of this release is the Consent Registry (without signature).

    Test approach

    The persona-based approach has been adopted to perform the IV&V(Independent Verification and Validation) by simulating the test scenarios that resemble a real-time implementation.

    A Persona is a fictional character/ user profile created to represent a user type that might use a product/ or a service in a similar way. Persona-based testing is a software testing technique that puts software testers in the customer's shoes, assesses their needs from the software and thereby determines use cases/ scenarios that the customers will execute. The persona's needs may be addressed through any of the following:

    • Functionality

    • Deployability

    • Configure-ability

    • Customize-ability

    The verification methods may differ based on how the need was addressed.

    For regression check, "MOSIP Test Rig", an automation testing suite is indigenously designed and developed for supporting persona-based testing. MOSIP Test Rig covers end-to-end test execution and reporting. The end-to-end functional test scenarios are written starting from pre-registration, to the creation of the packet in the registration centre, processing the packet through the registration processor, generating UIN and authenticating identity using IDA through various permutations and combinations of cases being covered.

    MOSIP Test Rig will be an open-source artifact which can also be enhanced and used by countries to validate the SI deliveries before going live. Persona classes include both negative and positive personas. Negative persona classes include users like Bribed Registration Office, Malicious Insider etc. The needs of positive persona classes must be met, whereas the needs of negative persona classes must be effectively restricted by the software.

    Verified configuration

    Verification is performed on various configurations as mentioned below:

    • Default configuration - with 3 Lang (English/ Arabic /French)

    Feature health

    Functional test results for eSignet

    Below are the test metrics obtained by performing functional testing for eSignet using mockMDS, mockAuth and mockABIS. The process followed was black box testing which based its test cases on the specifications of the software component under test.

    The functional test was performed in combination with individual module testing as well as integration testing. Test data were prepared in line with the user stories. Expected results were monitored by examining the user interface. The coverage includes GUI testing, System testing, and end-to-end flows across multiple languages and configurations. The testing cycle included the simulation of multiple identity schema and respective UI schema configurations.

    Total

    Passed

    Failed

    Skipped

    952

    879

    55

    18

    Test Rate: 98% with Pass Rate: 94%

    Here is the detailed breakdown of metrics for eSignet:

    API based testing

    • Total Test cases: 707

      • Passed: 651

      • Failed: 41

      • Skipped: 15

    In API-based testing, 15 test cases are marked as skipped as they were not automated.

    UI based testing

    • Total Test cases: 245

      • Passed: 228

      • Failed: 14

      • Skipped: 3

    External API verification results for eSignet

    The below section provides details on API test metrics for eSignet by executing the MOSIP functional automation Framework. The external API test executions were performed at module-level isolation. Each endpoint is tested with the test data and expectations of each test data are mapped to assert the test case.

    Total

    Passed

    Failed

    Skipped

    823

    809

    14

    0

    Test Rate: 100% with Pass Rate: 98%

    Detailed test metrics

    Below are the detailed test metrics by performing manual/ automation testing. The project metrics are derived from Defect density, Test coverage, Test execution coverage, test tracking and efficiency.

    The various metrics that assist in test tracking and efficiency are as follows:

    • Passed Test Cases Coverage: It measures the percentage of passed test cases. (Number of passed tests / Total number of tests executed) x 100

    • Failed Test Case Coverage: It measures the percentage of all the failed test cases. (Number of failed tests / Total number of test cases executed) x 100

    Link for the detailed test report.

    Sonar Report

    Verifiable Credentials Issuance: eSignet is an OAuth 2.0 and OIDC-based solution that has been enhanced to support OID4VCI flows. Integrating the eSignet VCI solution into a traditional issuer, allows the issuer application to become compliant with OID4VCI standards, ensuring interoperability with all OID4VCI compatible wallets.

  • Signed Consent: eSignet securely saves the consent in a dedicated consent registry that is specifically designed to store user consent for claims and scopes requested during the initial login to a relying party's application using eSignet.

  • PKCE Security extension added: We also provide support for the PKCE security extension, which allows for the secure exchange of an authorization code for a token. This guarantees that the authorization code was obtained by the client application itself during the exchange process.

  • Multiple wallet support: Mobile wallet-based authentication can be employed to scan a QR code and complete the authentication process utilizing the previously activated credentials for online login. Moreover, facial authentication can occur on the wallet to ensure the presence of the authorized individual is verified.

  • Language Support for eSignet: The eSignet user interface (UI) offers comprehensive language support to facilitate effective communication. By default, eSignet includes language bundles for Arabic, English, Hindi, Kannada, and Tamil. Moreover, it can be easily customized to incorporate additional languages as necessary to accommodate specific country requirements. Furthermore, eSignet has undergone meticulous testing to ensure seamless compatibility with right-to-left (RTL) languages. This means that users can rely on eSignet to confidently navigate and interact with RTL content.

  • Features Included

    Below are the features available in the release:

    • Login with OTP

    • Login with biometrics

    • Wallet-based authentication

    • Multi-language support

    • Captcha validation

    • Consent storage

    • VC Issuance

    Repositories Released

    Repository Released
    Tags

    keymanager

    id-authentication

    Artifactory-ref-impl

    mosip-config

    mosip-helm

    mosip-infra

    For details on deployment, go through the helm charts in the eSignet repository.

    Documentation

    • Feature Documentation

    • Integration Guides

    • End User Guide

    • API Documentation

    VC Issuance

    Please note: This is not an alternative to the proper registration process. This is just a module that helps in digitalizing the existing ID (One or More) using a unique process with varying assurance level.

    The Power of Self-Registration

    The eSignet Signup Module is built around self-registration, empowering users to take control of their digital identity creation without complex prerequisites. Here’s how it works:

    1. Simple Onboarding: Users can sign up with basic information, such as a mobile number and password, without needing immediate verification. This low-barrier entry ensures that anyone with a phone or internet access can create a profile.

    2. Progressive KYC Integration: After initial registration, users can add Know Your Customer (KYC) details, such as National ID, passport, or tax ID, at their own pace, enhancing their profile over time.

    3. User-Controlled Process: Self-registration allows users to manage their profiles independently, reducing reliance on intermediaries and making the process more accessible.

    This self-service approach is especially impactful in regions with limited access to traditional identity infrastructure, enabling users to start their digital journey with minimal friction.

    Promoting Inclusion Through Design

    Inclusion is at the heart of eSignet’s mission, and the Signup Module is designed to ensure 'no one is left behind' in the digital identity ecosystem. Here’s how:

    • Multilingual Support: Built with React JS, the signup portal offers a responsive, multilingual interface, catering to diverse linguistic communities and breaking down language barriers.

    • Accessible Authentication Methods: Support for OTP (via SMS/email), biometrics, and QR codes accommodates users with varying technological access. For instance, individuals in rural areas with basic phones can use OTP, while those with smartphones can opt for biometrics.

    • No Mandatory Verification at Signup: Unlike traditional systems requiring upfront documentation, eSignet allows registration without immediate KYC, critical for underserved populations lacking formal IDs.

    • Integration with a liveness engine enables face authentication over the web, ensuring secure verification even for users with standard devices.

    • : The module connects to any ID registry (e.g., MOSIP) via runtime plugins, making it adaptable to diverse national identity systems.

    By prioritizing accessibility and flexibility, eSignet promotes financial inclusion and bridges the digital divide, empowering marginalized communities to engage in the digital economy.

    Assurance Model and Progressive KYC

    The eSignet Signup Module’s assurance model is a cornerstone of its trust-building framework, ensuring that user identities are reliable while remaining accessible. Coupled with progressive KYC, this approach allows users to gradually enhance their digital profiles, balancing inclusivity with security. Here’s why this model is effective:

    • Multiple Assurance Levels for Gradual Trust Building: eSignet assigns assurance levels to user profiles based on the type and verification status of identity proofs provided. For example, a basic profile with just a mobile number may have a low assurance level, while adding a verified National ID or biometric data increases it. This tiered system allows users with varying types of proofs—such as government IDs, passports, or tax IDs—to progressively improve their profile’s legitimacy. Even users with limited documentation can start with basic credentials and work toward higher assurance over time.

    • Scoring of Multiple Proofs: The assurance model can incorporate scoring mechanisms to evaluate the reliability of multiple identity proofs. For instance, combining a verified National ID with biometric liveness detection results in a higher score than a single proof. This cumulative approach ensures that relying parties receive a clear, quantifiable measure of trust, tailored to their risk tolerance.

    • User-Driven Progression: Progressive KYC empowers users to choose their own path to achieving higher assurance levels. Unlike rigid systems that demand all documentation upfront, eSignet lets users add KYC details at their convenience. This flexibility is crucial for individuals who may need time to gather documents or lack immediate access to certain proofs, ensuring they can still participate in the digital ecosystem.

    • Cost Efficiency: By allowing users to start with minimal verification and add KYC incrementally, eSignet keeps costs low for both users and service providers. Users avoid the burden of obtaining expensive or hard-to-access documents upfront, while relying parties can integrate eSignet’s lightweight verification process without significant infrastructure investment.

    • Compliance for Relying Parties: The assurance model ensures that relying parties, such as financial institutions, meet regulatory requirements for identity verification. By providing verified data with clear assurance levels, eSignet enables compliance with anti-money laundering (AML) and KYC regulations, reducing risk while streamlining onboarding.

    Progressive KYC is an ideal starting point because it balances inclusivity with trust. It lowers barriers for users, especially in underserved communities, while providing relying parties with a scalable, compliant framework to verify identities as needed.

    How Signup Builds Trust

    Beyond the assurance model, Signup enhances trust through several features:

    • Liveness Detection: The liveness engine ensures that the person registering is physically present, reducing fraud risks, particularly for high-stakes applications like banking or government services.

    • Privacy-First Approach: User consent is mandatory before data is shared with relying parties, ensuring transparency and compliance with global privacy standards.

    • Secure Technology Stack: The Signup Module uses Java, Spring Framework, and PostgreSQL for secure data storage, with Redis for caching and Kafka for scalable asynchronous operations. The Key Manager handles cryptographic security.

    These elements create a trustworthy ecosystem where users feel confident, and relying parties can rely on verified data to reduce fraud and streamline processes.

    Summary

    The Signup Module redefines how digital identities can be created—independently, securely, and progressively. It is built to:

    • Enable voluntary self-registration

    • Support progressive KYC and assurance scoring

    • Promote inclusion, accessibility, and user control

    • Function independently or alongside eSignet

    • Scale securely across different use cases and ecosystems

    The Signup Module is not just a form—it's a gateway to digital participation for millions who are otherwise left behind.

    Documentation

    • Components

    • Integration of the Signup portal with eSignet

    Test Report

    Testing Scope

    The scope of testing is to verify fitment to the specification from the perspective of

    ● Functionality

    ● Deployability

    ● Configurability

    ● Customizability

    Verification is performed not only from the end user perspective but also from the System Integrator (SI) point of view. Hence Configurability and Extensibility of the software are also assessed. This ensures the readiness of software for use in multiple countries. Since MOSIP is an “API First” product platform, the Verification scope required comprehensive automation testing for all the MOSIP APIs. An automation Test Rig is created for the same.

    Test Approach

    Persona based approach has been adopted to perform the IV&V, by simulating test scenarios that resemble a real-time implementation.

    A Persona is a fictional character/user profile created to represent a user type that might use a product/or a service in a similar way. Persona based testing is a software testing technique that puts software testers in the customer's shoes, assesses their needs from the software, and thereby determines use cases/scenarios that the customers will execute. The persona's needs may be addressed through any of the following.

    ● Functionality

    ● Deployability

    ● Configurability

    ● Customizability

    The verification methods may differ based on how the need was addressed.

    For regression check, “MOSIP Test Rig” - an automation testing suite - is indigenously designed and developed for supporting persona based testing. MOSIP Test Rig covers the end to end test execution and reporting. The end to end functional test scenarios are written starting from pre-registration, to the creation of the packet in the registration center, processing the packet through the registration processor, generating UIN, and authenticating identity using IDA through various permutations and combinations of cases being covered. MOSIP Test Rig will be an open source artifact that can also be enhanced and used by countries to validate the SI deliveries before going live. Persona classes include both negative and positive personas. Negative persona classes include users like Bribed Registration Office, Malicious Insider, etc. The needs of positive persona classes must be met, whereas the needs of negative persona classes must be effectively restricted by the software.

    Verified configuration

    Verification is performed on various configurations as mentioned below

    Default configuration:

    ● eSignet with 7 Languages (English/Khmer/Hindi/Kannada/Tamil/Arabic/French)

    ● Signup in 2 languages (Khmer/English)

    Main features tested:

    • Signup Portal with mock ID

    • Login with Password with mock ID

    • Forgot Password with mock ID

    • Login with OTP with mock ID

    Feature Health

    Test execution statistics

    Functional test results

    Below are the test metrics by performing functional testing using mock MDS, mock Auth, and mock ABIS. The process followed was black box testing which based its test cases on the specifications of the software component under test. The functional test was performed in combination with individual module testing as well as integration testing. Test data were prepared in line with the user stories. Expected results were monitored by examining the user interface. The coverage includes GUI testing, System testing, End-To-End flows across multiple languages and configurations. The testing cycle included the simulation of multiple identity schema and respective UI schema configurations.

    Total Test Cases
    Passed
    Failed
    Skipped

    Test Rate: 98% with Pass rate: 97%

    Here is the detailed breakdown:

    API Based Testing - eSignet

    Total Test Cases
    Passed
    Failed
    Skipped

    UI Based Testing

    Total Test Cases
    Passed
    Failed
    Skipped

    API Testrig results for eSignet and Signup with Mock ID:

    API Based Testrig - eSignet

    Total Test Cases
    Passed
    Failed
    Skipped
    Ignored

    API Based Testrig - eSignet-signup

    Total Test Cases
    Passed
    Failed
    Skipped
    Ignored

    Note: In API Based testing, 26 test cases are marked as skipped as they were not automated and cannot be tested using Postman.

    In UI Based testing, 20 test cases are marked as skipped as they were out of scope for the release.

    Detailed Test metrics:

    Below are the detailed test metrics by performing manual/automation testing. The project metrics are derived from Defect density, Test coverage, Test execution coverage, test tracking, and efficiency.

    The various metrics that assist in test tracking and efficiency are as follows:

    ● Passed Test Cases Coverage: It measures the percentage of passed test cases. (Number of passed tests / Total number of tests executed) x 100

    ● Failed Test Case Coverage: It measures the percentage of all the failed test cases. (Number of failed tests / Total number of test cases executed) x 100

    Sonar Report:

    Repo Name
    Branch Name
    Release Version (POM)
    Coverage (>80%)
    Reliability (0)
    Security (0)
    Hotspots (0)
    Duplications (Less than 3%)

    Test Report

    The scope of testing is to verify fitment to the specification from the perspective of:

    • Functionality

    • Deployability

    • Configurability

    • Customizability

    Verification is performed not only from the end-user perspective but also from the System Integrator (SI) point of view. Hence, the configureability and extensibility of the software is also assessed. This ensures the readiness of software for use in multiple countries. Since MOSIP is an “API First” product platform, the verification scope required comprehensive automation testing for all the MOSIP APIs. An automated Test Rig is created for the same.

    Test approach

    The persona-based approach has been adopted to perform the IV&V(Independent Verification and Validation) by simulating the test scenarios that resemble a real-time implementation.

    A Persona is a fictional character/ user profile created to represent a user type that might use a product/ or a service in a similar way. Persona-based testing is a software testing technique that puts software testers in the customer's shoes, assesses their needs from the software and thereby determines use cases/ scenarios that the customers will execute. The persona's needs may be addressed through any of the following:

    • Functionality

    • Deployability

    • Configure-ability

    • Customize-ability

    The verification methods may differ based on how the need was addressed.

    For regression check, "MOSIP Test Rig", an automation testing suite is indigenously designed and developed for supporting persona-based testing. MOSIP Test Rig covers end-to-end test execution and reporting. The end-to-end functional test scenarios are written starting from pre-registration, to the creation of the packet in the registration centre, processing the packet through the registration processor, generating UIN and authenticating identity using IDA through various permutations and combinations of cases being covered.

    MOSIP Test Rig will be an open-source artifact which can also be enhanced and used by countries to validate the SI deliveries before going live. Persona classes include both negative and positive personas. Negative persona classes include users like Bribed Registration Office, Malicious Insider etc. The needs of positive persona classes must be met, whereas the needs of negative persona classes must be effectively restricted by the software.

    Verified configurations

    Verification is performed on various configurations as mentioned below:

    • Default configuration - with 7 Languages (English / Khmer / Hindi / Kannada / Tamil / Arabic / French)

    Main features tested

    • Signup Portal

    • Login with Password

    • Forgot Password

    • Login with OTP

    Feature health

    Test Execution Statistics

    Functional test results for eSignet

    Below are the test metrics obtained by performing functional testing for eSignet using mockMDS, mockAuth and mockABIS. The process followed was black box testing which based its test cases on the specifications of the software component under test.

    The functional test was performed in combination with individual module testing as well as integration testing. Test data were prepared in line with the user stories. Expected results were monitored by examining the user interface. The coverage includes GUI testing, System testing, and end-to-end flows across multiple languages and configurations. The testing cycle included the simulation of multiple identity schema and respective UI schema configurations.

    Test Rate: 99% with Pass Rate: 95%

    Here is the detailed breakdown of metrics for eSignet:

    API based testing

    • Total Test cases: 1575

      • Passed: 1499

      • Failed: 74

      • Skipped: 2

    UI based testing

    • Total Test cases: 628

      • Passed: 586

      • Failed: 32

      • Skipped: 10

    API Testrig results for eSignet and Mimoto

    API based testing - eSignet

    • Total Test cases: 1279

      • Passed: 1194

      • Failed: 72

      • Skipped: 13

    API based testing - momoto

    • Total Test cases: 157

      • Passed: 145

      • Failed: 12

      • Skipped: 0

    Note: In API Based testing, test cases are marked as skipped as they were not automated.

    In UI Based testing, test cases are marked as skipped as they were enhancement test cases.

    Detailed test metrics

    Below are the detailed test metrics by performing manual / automation testing. The project metrics are derived from Defect density, Test coverage, Test execution coverage, test tracking, and efficiency.

    The various metrics that assist in test tracking and efficiency are as follows:

    • Passed Test Cases Coverage: It measures the percentage of passed test cases. (Number of passed tests / Total number of tests executed) x 100

    • Failed Test Case Coverage: It measures the percentage of all the failed test cases. (Number of failed tests / Total number of test cases executed) x 100

    Link for the .

    Sonar Report

    eSignet

    eSignet Signup Repository

    Code Contribution

    Overview

    The below recommended Github workflow allows developers to submit code and documentation contributions to eSignet open-source repositories.

    Repositories

    Setup your development machine

    1. Fork repository of interest.

    2. Clone the fork to your local machine. E.g.:

    3. Set the upstream project as the original from where you forked. E.g.:

    4. Make sure you never directly push upstream.

    Code changes

    1. Create a new issue in GitHub.

      1. Follow the issue template provided.

      2. Please provide as much information as possible.

      3. If you want to develop a new feature, please elaborate on the idea and discuss the design before starting development.

    3. On your local repo, switch to a branch if you are working on an older release (like the 1.0.0 branch) or stay in main/develop the branch.

    You will get a warning from git. Don't worry, our next step will take care of this warning.

    4. Create a new issue branch with the name of the issue.

    5. Make sure you are up-to-date with the upstream repo.

    You should do this quite often to ensure you are up to date.

    6. Now feel free to make the change in the code or documentation. Reach out to for any queries. Once done with the work, commit your changes by referring to the Issue ID in the commit message. Eg:

    7. Once again, ensure you are up-to-date with the upstream repo as it may have moved forward.

    8. Build and test your code. Make sure to follow the coding guidelines. Provide unit test cases for the changes you have built.

    9. Push to your forked repo (origin).

    10. On your forked remote repository from GitHub, create a pull request using the Contribute button. Direct the pull-request to main or any specific branch upstream.

    Most often it's the same branch in the upstream (as in Step 3).

    11. Make sure the automatic tests on GitHub for your pull request pass.

    12. Reviewers shall review the pull request. Reach out to the for a faster response.

    Test Report

    The scope of testing is to verify fitment to the specification from the perspective of:

    • Functionality

    • Deployability

    • Configurability

    Authenticator Plugin

    The Authenticator plugin is the main interface for eSignet, which provides methods to authenticate the end-user with control of the supported authentication factors and a method to fetch consented user information from the Identity system.

    The two main functionalities of the authenticator interface, KYC Auth and KYC Exchange, are depicted in the below diagram

    For eSignet Authentication Interface refer to the

    Who should implement the Authenticator plugin interface?

    v1.6.2

    Release Number: v1.6.2 (Patch)

    Release Date: 28th August, 2025

    Overview

    We are excited to announce , a patch release that adds support in the MOSIP Identity plugin. This enhancement enables the identity verification feature of the Signup module, such as video eKYC, to work seamlessly with MOSIP ID. Alongside this, the release delivers important security improvements and bug fixes, further strengthening stability and reliability.

    Features

    Features Overview

    The Signup Service in eSignet provides a secure, user-friendly, and standards-based platform for user onboarding and identity verification. It supports a wide spectrum of use cases—from basic profile creation to high-assurance identity verification—making it suitable for both public and private sector services.

    Below are the core capabilities of the Signup module:

    eSignet 1.6.1 - On-Prem Installation Guide

    Esignet Deployment in Kubernetes Environment

    Overview

    esignet-mock-services/docker-compose/README.md at master · mosip/esignet-mock-servicesGitHub
    1. Create User Profile with Minimum Details

    The Signup module allows users to create a profile using basic personal information, enabling fast and seamless onboarding. Users can optionally set a password during registration, allowing the profile to function as a standalone password-based account when required.

    Dynamic Signup Form (Schema-Driven UI)

    Earlier, the Signup form was static and offered limited flexibility in modifying field labels, types, or structure. The module now features a schema-driven dynamic form, enabling:

    • Full customization of fields (add, update, delete)

    • Support for multiple input types such as:

      • Photo capture

      • Dropdowns

      • Date pickers

      • And more

    • Adaptability to the relying party’s specific onboarding requirement

    Refer to the detailed form schema and configuration documentation.

    2. SignUp with Video eKYC

    For services requiring stronger identity verification, the Signup module supports a complete video eKYC flow. This allows relying parties to collect verified claims through a secure, real-time video interaction.

    As part of this enhancement, eSignet has implemented the OpenID Identity Assurance 1.0 flow to enable the processing, verification, and storage of verified claims once a user chooses to undergo video eKYC.

    eSignet’s implementation of the OpenID Identity Assurance 1.0 profile ensures that verified identity attributes collected during video eKYC are handled securely, consistently, and in a standards-aligned manner.

    Video eKYC can be triggered based on the relying party’s onboarding requirements:

    • Immediately after initial registration, or

    • As part of a high-assurance onboarding flow

    Refer the technical documentation

    End-user guide for the Video eKYC flow

    Please keep reading for more details in the OpenID identity assurance 1.0 spec.

    Identity Assurance Flow (eKYC Verification)

    For regulated industries such as banking, insurance, and digital governance, eSignet singup supports a robust Identity Assurance Flow that offers high-confidence verification at login.

    This flow includes but not limited to:

    • Real-time video-based KYC (eKYC) Live video verification ensures the person signing in is the rightful identity holder.

    • Government-issued document scanning Scans and validates official identity documents for authenticity.

    • Biometric validation Optional biometric checks (such as facial recognition) to further strengthen identity verification.

    This ensures that only verified individuals gain access to sensitive services, reducing fraud and enhancing compliance with national and international regulatory standards.

    Powered by OpenID Connect Assurance Extension

    The eSignet Sign-Up and Identity Assurance processes are built on the OpenID Connect (OIDC) Assurance Extension, which enhances the trustworthiness of identity claims.

    This includes:

    • Verification Status Identifies whether a claim (e.g., name, ID number) is self-declared or verified by a trusted source.

    • Verification Process Details Captures how each claim was verified—via biometric checks, document validation, or video-based processes—and by whom.

    • Assurance Level Communicates the level of confidence in the verification, helping relying parties make informed decisions about trust and access.

    This structured metadata provides transparency and trust in digital identities, especially critical in environments with high compliance requirements.

    3. Password Reset & Update

    The Signup module provides built-in support for:

    • Password reset (in case a user forgets their password)

    • Password update (when the user wants to change an existing password)

    These flows are implemented with strong security safeguards to ensure users can recover or modify their credentials without compromising identity integrity.

    Summary

    The eSignet Sign-Up Service is a comprehensive solution for digital identity onboarding and verification. Whether you're offering public healthcare, digital banking, or secure citizen services, it empowers you to:

    • Onboard users with flexibility and speed

    • Apply tiered identity verification based on use case

    • Meet compliance standards with verified identity metadata

    • Provide a seamless and secure experience across web and mobile platforms


    Old Content

    The eSignet Sign-Up Service provides a secure, user-friendly, and standards-based platform for user onboarding and identity verification. It is designed to support a wide range of use cases—from basic account creation to high-assurance identity verification making it suitable for both public and private sector services.

    User Profile Creation

    eSignet offers multiple ways to incrementally create a user profile, based on the level of assurance and regulatory requirements of the relying party.

    1. KYC with Minimum Details

    Users can sign up by providing basic personal information, validated against national ID systems like MOSIP. This allows for quick onboarding with foundational identity assurance.

    2. Video eKYC

    For services that require stronger verification, users can complete a video-based KYC process as part of the sign-up. This step is initiated automatically upon the user’s first login after registration, ensuring that identity is verified in real time through secure video interaction.

    3. Create Profile with Password

    Users have the option to create a traditional username/password profile. This supports both identity-linked and standalone account creation, depending on the integration setup.

    4. Reset Password

    eSignet includes a secure password reset flow, ensuring users can easily recover access to their accounts while maintaining identity integrity and system security.

    Identity Assurance Flow (eKYC Verification)

    For regulated industries such as banking, insurance, and digital governance, eSignet Signup module supports a robust 'Identity Assurance Flow' that offers high-confidence verification at login.

    This flow includes:

    • Real-time video-based KYC (eKYC) Live video verification ensures the person signing in is the rightful identity holder.

    • Government-issued document scanning Scans and validates official identity documents for authenticity.

    • Biometric validation Optional biometric checks (such as facial recognition) to further strengthen identity verification.

    This ensures that only verified individuals gain access to sensitive services, reducing fraud and enhancing compliance with national and international regulatory standards.

    Powered by OpenID Connect Assurance Extension

    The eSignet Sign-Up and Identity Assurance processes are built on the OpenID Connect (OIDC) Assurance Extension, which enhances the trustworthiness of identity claims.

    This includes:

    • Verification Status Identifies whether a claim (e.g., name, ID number) is self-declared or verified by a trusted source.

    • Verification Process Details Captures how each claim was verified—via biometric checks, document validation, or video-based processes—and by whom.

    • Assurance Level Communicates the level of confidence in the verification, helping relying parties make informed decisions about trust and access.

    This structured metadata provides transparency and trust in digital identities, especially critical in environments with high compliance requirements.

    Summary

    The eSignet Sign-Up Service is a comprehensive solution for digital identity onboarding and verification. Whether you're offering public healthcare, digital banking, or secure citizen services, it empowers you to:

    • Onboard users with flexibility and speed

    • Apply tiered identity verification based on use case

    • Meet compliance standards with verified identity metadata

    • Provide a seamless and secure experience across web and mobile platforms

    Liveness Detection for All:
    Flexible ID Registry Integration
    1.2.0.1
    1.2.0.1
    v2.0.0-rc3
    v0.1.0

    esignet

    1.2.0

    esignet-mock-services

    0.9.1

    mosip-file-server

    1.2.0.1-B4

    mosip-plugins/sign-in-with-esignet

    0.9.1

    mosip-onboarding

    1.2.0.1-B4

    QA Report
    1.2.0.1-B3
    1.2.0.1-B5
    1.2.0.1-B6
    1.2.0-ES
    1.2.0-ES
    1.2.0-ES
    Login with Biometrics
  • Login with Inji Wallet App

  • SubirdRC Integration (Using Inji App)

  • KBA Downloading and Sharing

  • KBA Pinning and Unpinning

  • KBA Backup and restore

  • KBA remove from the wallet

  • Total

    Passed

    Failed

    Skipped

    2203

    2085

    106

    12

    detailed test report

    Login with Biometrics with mock ID

  • Login with KBI with mock ID

  • Identity Verification Process (L2 flow) with mock ID

  • Signup Portal with MOSIP IDA

  • Login with Password with MOSIP IDA

  • Forgot Password with MOSIP IDA

  • Login with OTP with MOSIP IDA

  • Login with Biometrics with MOSIP IDA

  • Login with KBI with MOSIP IDA

  • Sunbird Plugin with MOSIP IDA

  • Critical and Blocker Bugs Verification

  • Docker Compose Testing for eSignet and signup (Windows and Linux)

  • eSignet Signup

    release-1.1.x

    v1.1.1

    81.2%

    0

    0

    0

    0%

    2928

    2815

    67

    46

    1934

    1857

    51

    26

    994

    958

    16

    20

    962

    465

    0

    0

    497

    579

    552

    0

    0

    26

    eSigent

    release-1.5.x

    v1.5.1

    86.2%

    0

    0

    0

    Feature Health

    0%

    Confirm the origin and upstream.

  • In your local repository, fetch the upstream.

  • our community
    community
    Customizability

    Verification is performed not only from the end-user perspective but also from the System Integrator (SI) point of view. Hence, the configureability and extensibility of the software is also assessed. This ensures the readiness of software for use in multiple countries. Since MOSIP is an “API First” product platform, the verification scope required comprehensive automation testing for all the MOSIP APIs. An automated Test Rig is created for the same.

    Test approach

    The persona-based approach has been adopted to perform the IV&V(Independent Verification and Validation) by simulating the test scenarios that resemble a real-time implementation.

    A Persona is a fictional character/ user profile created to represent a user type that might use a product/ or a service in a similar way. Persona-based testing is a software testing technique that puts software testers in the customer's shoes, assesses their needs from the software and thereby determines use cases/ scenarios that the customers will execute. The persona's needs may be addressed through any of the following:

    • Functionality

    • Deployability

    • Configure-ability

    • Customize-ability

    The verification methods may differ based on how the need was addressed.

    For regression check, "MOSIP Test Rig", an automation testing suite is indigenously designed and developed for supporting persona-based testing. MOSIP Test Rig covers end-to-end test execution and reporting. The end-to-end functional test scenarios are written starting from pre-registration, to the creation of the packet in the registration centre, processing the packet through the registration processor, generating UIN and authenticating identity using IDA through various permutations and combinations of cases being covered.

    MOSIP Test Rig will be an open-source artifact which can also be enhanced and used by countries to validate the SI deliveries before going live. Persona classes include both negative and positive personas. Negative persona classes include users like Bribed Registration Office, Malicious Insider etc. The needs of positive persona classes must be met, whereas the needs of negative persona classes must be effectively restricted by the software.

    Verified configurations

    Verification is performed on various configurations as mentioned below:

    • Default configuration - with 2 Languages (English/ Khmer)

    Main features tested

    • Signup Portal

    • Login with Password

    • Forgot Password

    Feature health

    Test Execution Statistics

    Functional test results for eSignet

    Below are the test metrics obtained by performing functional testing for eSignet using mockMDS, mockAuth and mockABIS. The process followed was black box testing which based its test cases on the specifications of the software component under test.

    The functional test was performed in combination with individual module testing as well as integration testing. Test data were prepared in line with the user stories. Expected results were monitored by examining the user interface. The coverage includes GUI testing, System testing, and end-to-end flows across multiple languages and configurations. The testing cycle included the simulation of multiple identity schema and respective UI schema configurations.

    Total

    Passed

    Failed

    Skipped

    1604

    1524

    76

    4

    Test Rate: 99% with Pass Rate: 95%

    Here is the detailed breakdown of metrics for eSignet:

    API based testing

    • Total Test cases: 1256

      • Passed: 1205

      • Failed: 49

      • Skipped: 2

    In API Based testing, 2 test cases are marked as skipped as they were not automated.

    UI based testing

    • Total Test cases: 348

      • Passed: 319

      • Failed: 27

      • Skipped: 2

    In UI Based testing, 2 test cases are marked as skipped as they were enhancement test cases.

    Detailed test metrics

    Below are the detailed test metrics by performing manual / automation testing. The project metrics are derived from Defect density, Test coverage, Test execution coverage, test tracking, and efficiency.

    The various metrics that assist in test tracking and efficiency are as follows:

    • Passed Test Cases Coverage: It measures the percentage of passed test cases. (Number of passed tests / Total number of tests executed) x 100

    • Failed Test Case Coverage: It measures the percentage of all the failed test cases. (Number of failed tests / Total number of test cases executed) x 100

    Link for the detailed test report.

    Device and Browser details

    Mobile Specification

    Device
    Browser
    Browser version
    OS version
    Display resolution
    Screen size

    iphone 15 plus

    Safari

    17

    17.2

    1290x2796 pixels

    6.7 inches

    iphone 7

    Safari

    15

    Desktop browser specification

    Browser
    Browser version

    Chrome

    120.0.6099.110

    Mozilla Firefox

    122.0 (20240118164516)

    Microsoft Edge

    121.0.2277.128

    Duckduckgo

    0.66.1

    Opera

    107.0.5045.21

    Safari

    16.6

    The authenticator plugin is implemented by any organization - public or private, that wishes to integrate its identity system with eSignet to enable digital identity usage

    An Identity system can be as simple as a table in a database or an Excel file storing user identity data or it can be a complex Identity System.

    How to implement this plugin?

    Any organization intending to integrate eSignet with an identity system of its choice must make necessary customizations to the authenticator plugin. These modifications ensure that the plugin can seamlessly interface with the target identity system and support its specific authentication and verification workflows. This approach enables eSignet to integrate efficiently with a wide range of identity systems. Please keep reading for further details.

    In the eSignet architecture, the Authenticator acts as the bridge between eSignet and the Identity Registry. All protocol-related responsibilities are handled entirely within eSignet, while all identity-related logic is implemented within the Authenticator interface. This separation ensures a clean, modular design and clear ownership of responsibilities.

    eSignet responsibilities

    • OAuth / OIDC / FAPI specification adherence

    • Consent handling

    • Token issuance

    Authenticator responsibilities

    • Authenticate user

    • Fetch verified user attributes (KYC)

    • Return data to eSignet in agreed structure

    Before You Implement

    Consider the authentication scenario and the type of identity system you are using. For example, Lets assume your identity system supports only OTP based login.

    Sample Pseudocode: Authenticator Implementation

    Note:

    • OTP and password are the only supported auth factors in this scenario

    • For unsupported factors, return an error.

    • Token generation and signing depend on your implementation strategy.

    • Certificates must be managed securely (SoftHSM or custom keystore).

    Important:

    Reference implementations of the Authenticator Plugin for MOCK ID and MOSIP ID are available. Please see the details below.

    1. Please refer to how our mock-plugin implements the eSignet Authenticator plugin to integrate eSignet with the mock identity system.

    2. Also, look at the reference implementation enabling the eSignet integration with the MOSIP identity system.

    Link
    Major Highlights
    1. Identity Assurance 1.0 Support in MOSIP Identity Plugin Support in MOSIP Identity plugin to comply with Identity Assurance 1.0. This enables the Signup video eKYC flow to work with MOSIP ID Repo and IDA.

    Enhancements

    1. Bug Fixes Multiple known issues have been resolved to improve stability and reliability. Please refer here for full list of bug fixes.

    2. Security Fixes Applied critical security patches to address vulnerabilities and strengthen system security.

    Compatibility Note

    eSignet v1.6.2 mainly introduces support for Identity Assurance 1.0 in MOSIP Identity Plugin, which enables the eSignet and Signup module to integrate seamlessly with MOSIP ID.

    ⚠️ Important:

    1. The Identity Assurance 1.0 support added in the MOSIP ID plugin will be available starting with the following future versions of MOSIP modules:

      • ID Repo: v1.2.3.0 (Coming Soon)

      • IDA: v1.2.2.0 (Coming Soon)

    2. eSignet and the Signup module have been verified with these yet-to-be-released versions of MOSIP modules.

    3. The identity verification feature in Signup (such as video eKYC) will be fully compatible with MOSIP ID only when the above module versions are officially released.

    4. Until then, all existing features of eSignet and Signup (other than the video eKYC flow) will continue to work as expected with the currently released versions of MOSIP ID modules.

    Known Issues

    Jira ID
    Summary

    esignet mosip id SendBindingOtp and WalletBinding test cases are failing with "errorCode": "IDA-MLC-018"

    In mock when we are providing "trust_framework": null we are getting the user info response for first claim

    Please refer here for full list of known issues.

    Repositories Released

    Repository
    Tag

    esignet

    esignet-signup

    esignet-mock-services

    esignet-plugins

    Compatible Modules

    eSignet with MOSIP compatibility matrix

    Module/Repo
    Compatible Version

    PMS

    IDA

    1.2.2.0 (for identity assurance 1.0 support)

    eSignet with Sunbird compatibility matrix

    Module/Repo
    Compatible Version

    Sunbird

    Signup with MOSIP compatibility matrix

    ID Repository

    1.2.3.0 (for identity assurance 1.0 support)

    Keymanager

    DB Changes

    • eSignet: N/A

    • Signup: N/A

    Config Changes

    • eSignet:

      • Added the following configurations in mosip-identity-plugin properties file to invoke IDA v2 endpoints for eKYC flow

        • mosip.esignet.authenticator.ida.kyc-auth-url-v2

        • mosip.esignet.authenticator.ida.kyc-exchange-url-v2

    • Signup: N/A

    Documentation

    API Documentation

    • eSignet API (v1.6.2)

    • Signup API (v1.2.2)

    Integration Guides

    • eSignet Integration Guide

    • Signup Integration Guide

    End User Guides

    • eSignet End User Guide

    • Signup End User Guide

    QA Report

    • QA Report

    eSignet v1.6.2
    Identity Assurance 1.0

    This guide will walk you through the deployment process of the Esignet application.

  • The setup involves creating

    • Kubernetes cluster

    • Setting up Nginx

    • Installing Istio

    • Configuring storage class

    • Configuring the necessary dependent services

    • Deploying Esignet services

  • Deployment

    K8 cluster

    • Kubernetes cluster should be ready with storage class and ingress configured properly.

    • Below is the document containing steps to create and configure K8 cluster.

      • Onprem RKE CLuster : Create RKE K8 cluster using mentioned steps.

        • Persistence : Setup storage class as per .

        • Istio service mesh : Setup Istio service mesh using .

        • Nginx : Setup and configure nginx as per .

        • Logging : Setup logging as per .

        • Monitoring : Setup monitoring consisting elasticsearch, kibana, grafana using .

      • AWS EKS cluster : Create AWS EKS cluster using mentioned .

        • Persistence : Setup storage class as per .

        • Ingress and Loadbalancer : Setup nginx and configure NLB for exposing services outside using .

        • Logging : Setup logging as per

    Install Pre-requisites

    • esignet-global configmap: For eSignet K8's env, esignet-global configmap in esignet namespace contains Domain related information. Follow below steps to add domain details for esignet-global configmap.

      • Copy esignet-global-cm.yaml.sample to esignet-global-cm.yaml.

      • Update the domain names in esignet-global-cm.yaml correctly for your environment.

      • Create a google recaptcha v2 ("I am not a Robot") from Google with required domain name ex:[sandbox.mosip.net] and set esignet captcha.

      • External IAM scope: [TODO]

        • If using an external IAM, copy the secrets from the external IAM and create a secret named keycloak-client-secrets in the esignet namespace.

    • Install pre-requisites

    Initialise pre-requisites

    • Update values file for postgres init here.

    • Execute initialise-prereq.sh script to initialise postgres and keycloak.

    Install esignet and oidc

    During deployment, the system will prompt for user input to select the appropriate plugin. The available options are listed below:

    1. esignet-mock-plugin

    2. mosip-identity-plugin

    3. sunbird-rc-plugin

    4. custom-plugin"

    Onboarder

    • There are two ways to proceed, either with mosip identity plugin or with mock plugin.

    MOSIP Identity Plugin

    • If Esignet is getting deployed with MOSIP then we need to execute the onboarder for MISP partner and mock-rp oidc clientId.

    • Onboarder scripts.

    MOCK Plugin

    Download and import eSignet-with-mock.postman_environment.json and eSignet.postman_collection.json postman collection from here)

    OIDC Client Management Instructions

    1. Fetch the Authentication Token Navigate to "OIDC Client Mgmt" → "Mock" → "Get Auth Token" to retrieve the authentication token.

      • Update the client_secret (retrieve it from the keycloak-client-secrets).

      • Update the iam_url (Keycloak URL) in the request body.

        • Retrieve the Keycloak URL from the config-map under keycloak-host → keycloak-external-url.

    2. Fetch the CSRF Token

      • Navigate to "OIDC Client Mgmt" → "Mock" → "Get CSRF Token" to obtain the CSRF token.

      • Update the "url" to ge the CSRF Token.

    3. Update the Request Fields for OIDC Client Creation

      • Before executing the "Create OIDC Client" request, update the following fields in the request body:

        • url

        • logo-uri

    4. Update the clientId in Deployment

      • Once the clientId is created and activated, update the clientId in the mock-relying-party-ui deployment.

    5. Update the Client Private Key

      • Retrieve the client-private-key from the eSignet-with-mock Postman environment, as shown in the image below: *

        • Encode the retrieved client-private-key using Base64.

    Note: This deployment is limited to mock, Section below, related to configuring IDA is not tested. Still it can be tried out

    CONFIGURE IDA for Esignet

    Onboard eSignet as MISP partner in MOSIP PMS using our onboarder script We should override properties defined here if there is any change in the MOSIP IDA domain names. Update the 'MOSIP_ESIGNET_AUTHENTICATOR_IDA_SECRET_KEY' property with MOSIP IDA keycloak client secret.

    Test Report

    The scope of testing is to verify fitment to the specification from the perspective of:

    • Functionality

    • Deployability

    • Configurability

    • Customizability

    Verification is performed not only from the end-user perspective but also from the System Integrator (SI) point of view. Hence, the configureability and extensibility of the software are also assessed. This ensures the readiness of software for use in multiple countries. Since MOSIP is an “API First” product platform, the verification scope required comprehensive automation testing for all the MOSIP APIs. An automated Test Rig is created for the same.

    The key features tested as a part of this release are:

    • Consent registry with signature (for consent link wallet flow)

    • VCI

    • Multiple types of wallet login in UI

    Test approach

    The persona-based approach has been adopted to perform the IV&V(Independent Verification and Validation) by simulating the test scenarios that resemble a real-time implementation.

    A Persona is a fictional character/ user profile created to represent a user type that might use a product/ or a service in a similar way. Persona-based testing is a software testing technique that puts software testers in the customer's shoes, assesses their needs from the software and thereby determines use cases/ scenarios that the customers will execute. The persona's needs may be addressed through any of the following:

    • Functionality

    • Deployability

    • Configure-ability

    • Customize-ability

    The verification methods may differ based on how the need was addressed.

    For regression check, "MOSIP Test Rig", an automation testing suite is indigenously designed and developed for supporting persona-based testing. MOSIP Test Rig covers end-to-end test execution and reporting. The end-to-end functional test scenarios are written starting from pre-registration, to the creation of the packet in the registration centre, processing the packet through the registration processor, generating UIN and authenticating identity using IDA through various permutations and combinations of cases being covered.

    MOSIP Test Rig will be an open-source artifact which can also be enhanced and used by countries to validate the SI deliveries before going live. Persona classes include both negative and positive personas. Negative persona classes include users like Bribed Registration Office, Malicious Insider etc. The needs of positive persona classes must be met, whereas the needs of negative persona classes must be effectively restricted by the software.

    Verified configurations

    Verification is performed on various configurations as mentioned below:

    • Default configuration - with 3 Lang (English/ Arabic /French)

    Main features tested

    • Consent registry with signature (for consent link wallet flow)

    • VCI

    • Multiple types of wallet login in UI

    Feature health

    Test Execution Statistics

    Functional test results for eSignet

    Below are the test metrics obtained by performing functional testing for eSignet using mockMDS, mockAuth and mockABIS. The process followed was black box testing which based its test cases on the specifications of the software component under test.

    The functional test was performed in combination with individual module testing as well as integration testing. Test data were prepared in line with the user stories. Expected results were monitored by examining the user interface. The coverage includes GUI testing, System testing, and end-to-end flows across multiple languages and configurations. The testing cycle included the simulation of multiple identity schema and respective UI schema configurations.

    Test Rate: 94% with Pass Rate: 96%

    Here is the detailed breakdown of metrics for eSignet:

    API based testing

    • Total Test cases: 973

      • Passed: 866

      • Failed: 36

      • Skipped: 71

    In API-based testing, 71 test cases are marked as skipped as they were not automated.

    UI based testing

    • Total Test cases: 350

      • Passed: 332

      • Failed: 11

      • Skipped: 7

    External API verification results for eSignet

    The below section provides details on API test metrics for eSignet by executing the MOSIP functional automation Framework. The external API test executions were performed at module-level isolation. Each endpoint is tested with the test data and expectations of each test data are mapped to assert the test case.

    Test Rate: 100% with Pass Rate: 94%

    Detailed test metrics

    Below are the detailed test metrics by performing manual/ automation testing. The project metrics are derived from Defect density, Test coverage, Test execution coverage, test tracking and efficiency.

    The various metrics that assist in test tracking and efficiency are as follows:

    • Passed Test Cases Coverage: It measures the percentage of passed test cases. (Number of passed tests / Total number of tests executed) x 100

    • Failed Test Case Coverage: It measures the percentage of all the failed test cases. (Number of failed tests / Total number of test cases executed) x 100

    Link for the .

    Sonar Report

    Repo Name
    Version
    Branch Name
    Coverage (>80%)
    Reliability (0)
    Security (0)
    Hotspots (0)
    Duplications (Less than 3%)

    Test Report

    Scope

    The scope of testing is to verify fitment to the specification from the perspective of:

    • Functionality

    • Deployability

    • Configurability

    • Customizability

    Verification is performed not only from the end-user perspective but also from the System Integrator (SI) point of view. Hence, the configurability and extensibility of the software is also assessed. This ensures the readiness of software for use in multiple countries. Since MOSIP is an “API First” product platform, the verification scope required comprehensive automation testing for all the MOSIP APIs. An automated test rig is created for the same.

    TheeSignet testing scope revolves around the following flows:

    • Login with OTP

    • Login with Biometrics (mock)

    • QR code login flow

    • Multi-language support

    Test approach

    The persona-based approach has been adopted to perform the IV&V(Independent Verification and Validation) by simulating the test scenarios that resemble a real-time implementation.

    A Persona is a fictional character/ user profile created to represent a user type that might use a product/ or a service in a similar way. Persona-based testing is a software testing technique that puts software testers in the customer's shoes, assesses their needs from the software and thereby determines use cases/ scenarios that the customers will execute. The persona's needs may be addressed through any of the following:

    • Functionality

    • Deployability

    • Configurability

    • Customizability

    The verification methods may differ based on how the need was addressed.

    For regression check, MOSIP Test Rig, an automation testing suite is indigenously designed and developed for supporting persona-based testing. MOSIP Test Rig covers end-to-end test execution and reporting. The end-to-end functional test scenarios are written starting from pre-registration, to the creation of the packet in the registration centre, processing the packet through the registration processor, generating UIN and authenticating identity using IDA through various permutations and combinations of cases being covered.

    MOSIP Test Rig will be an open-source artifact which can also be enhanced and used by countries to validate the SI deliveries before going live. Persona classes include both negative and positive personas. Negative persona classes include users like Bribed Registration Office, Malicious Insider etc. The needs of positive persona classes must be met, whereas the needs of negative persona classes must be effectively restricted by the software.

    Verified configuration

    Verification is performed on various configurations as mentioned below:

    • Default configuration- with 3 Lang

    • Virtual countries

      • 1 Lang configuration

      • 2 Lang configuration

    Feature health

    Functional test results for eSignet

    Below are the test metrics by performing functional testing for eSignet using mockMDS, mockAuth and mockABIS. The process followed was black box testing which based its test cases on the specifications of the software component under test. The functional test was performed in combination with individual module testing as well as integration testing. Test data were prepared in line with the user stories. Expected results were monitored by examining the user interface. The coverage includes GUI testing, System testing, End-To-End flows across multiple languages and configurations. The testing cycle included the simulation of multiple identity schema and respective UI schema configurations.

    Test Rate: 94% with Pass Rate: 99%

    Here is the detailed breakdown of metrics for eSignet:

    API based testing

    • Total Test cases: 642

      • Passed: 590

      • Failed: 7

      • Skipped: 45

    Note: 45 test cases are marked as skipped as they were not automated.

    UI based testing

    • Total Test cases: 175

      • Passed: 175

      • Failed: 0

      • Skipped: 0

    External API verification results for eSignet

    The below section provides details on API test metrics for eSignet by executing the MOSIP functional automation Framework. The external API test executions were performed at module-level isolation. Each endpoint is tested with the test data and expectations of each test data are mapped to assert the test case.

    Test Rate: 100% with Pass Rate: 99%

    Testing End-to-end flow(s)

    End-to-end flows are a set of stateful test cases that expect the results across multiple modules. The test does not cover the intermediary stages but rather concentrates on the end result for a given data. The test covers both negative scenarios and positive scenarios with real-world scenarios. Below are the end-to-end scenarios test metrics by executing the MOSIP Automation Framework.

    Test Rate: 100% with Pass Rate: 75%

    Detailed test metrics

    Below are the detailed test metrics by performing manual/ automation testing. The project metrics are derived from Defect density, Test coverage, Test execution coverage, test tracking and efficiency.

    The various metrics that assist in test tracking and efficiency are as follows:

    • Passed Test Cases Coverage: It measures the percentage of passed test cases. (Number of passed tests / Total number of tests executed) x 100

    • Failed Test Case Coverage: It measures the percentage of all the failed test cases. (Number of failed tests / Total number of test cases executed) x 100

    Link for the .

    Configure eSignet

    In this section, we have listed the properties that may change from implementation to implementation. All the properties used by eSignet with their default values can be found in the esignet-default.properties.

    Basic Configurations

    These are very basic configuration properties of the eSignet service. Most of them are set to ideal values by default.

    • Generated ID token expiry time in seconds mosip.esignet.id-token-expire-seconds=3600

    • Generated access token expiry time in seconds mosip.esignet.access-token-expire-seconds=3600

    • Captcha validation is enabled for the auth-factors - otp, password, biometrics, and pin.

      mosip.esignet.captcha.required=send-otp,pwd,kbi

    • Time gap allowed between authentication and consent capture in seconds mosip.esignet.authentication-expire-in-secs

    • Applicable for QR code-based login: QR code is embedded with link-code which is used by wallet apps to link transactions between the wallet app and the browser. This is the property to define the lifetime of a link code in seconds. mosip.esignet.link-code-expire-in-secs=600

    • Regex to validate the input client ID mosip.esignet.supported-id-regex=\\S*

    • One can configure wallet details that will be used to render as one of the login options. By default eSignet is setup with Inji wallet details. mosip.esignet.ui.wallet.config={{'wallet.name': 'walletName', 'wallet.logo-url': '/images/qr_code.png', 'wallet.download-uri': '#', 'wallet.deep-link-uri': 'io.mosip.residentapp.inji://wla-auth?linkCode=LINK_CODE&linkExpireDateTime=LINK_EXPIRE_DT' }}

    • Configuration required to display KBI form. individual-id-field is set with field id which should be considered as an individual ID in the authenticate request.

    • Please find the list of field and details below:

      • id -> unique field id, type -> holds datatype, format -> only supported for date fields, regex -> pattern to validate the input value, maxLength -> number of allowed characters.

      • mosip.esignet.authenticator.default.auth-factor.kbi.individual-id-field=policyID

      • mosip.esignet.authenticator.default.auth-factor.kba.field-details={{'id': '${mosip.esignet.authenticator.default.auth-factor.kba.individual-id-field}', 'type':'text', 'format':'', 'maxLength': 50, 'regex': '^\s*[+-]?(\d+|\d*\.\d+|\d+\.\d*)([Ee][+-]?\d*)?\s*$'},{'id':'fullName', 'type':'text', 'format':'', 'maxLength': 50, 'regex': '^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$'},{'id':'dob', 'type':'date', 'format':'dd/mm/yyyy'}}

    • Dynamically render the KBI form as per JSON Schema by using the property below:

      • MOSIP_ESIGNET_AUTHENTICATOR_DEFAULT_AUTH_FACTOR_KBI_FIELD_DETAILS_URL

    Important

    1. URL pointing to the raw JSON schema defining the KBI field details.

    2. The schema must include the fields, their types, validation rules, and multilingual labels used for KBI authentication.

    • Supports multiple configurable login ID types (e.g., Mobile Number, NRC ID, VID, Email), allowing users to log in using any of them, with optional prefix and postfix handling.

      • mosip.esignet.ui.config.login-id.options={ \ { "id": "mobile", "svg": "mobile_icon", "prefixes": [{"label": "IND", "value": "+91", "maxLength": "", "regex": ""}, {"label": "KHM", "value": "+855"}], "postfix": "@phone", "maxLength": "", "regex": "" }, \ { "id": "nrc", "svg": "nrc_id_icon", "prefixes": "", "postfix": "@NRC", "maxLength": "", "regex": "" }, \ { "id": "vid", "svg": "vid_icon", "prefixes": "", "postfix": "@ID", "maxLength": "", "regex": "" }, \ { "id": "email", "svg": "email_icon", "prefixes": "", "postfix": "@email", "maxLength": "", "regex": "" } \ }

    OAuth and OpenID

    • Property to define the list of authorized scopes mosip.esignet.supported.authorize.scopes={'manage-resident-vid'}

    • Property to define the list of OpenId scopes mosip.esignet.supported.openid.scopes={'profile','email','phone'}

    • Property to define the OpenId scopes and user claim mappings mosip.esignet.openid.scope.claims={'profile' : {'name','picture','gender','birthdate','address'},'email' : {'email'}, 'phone' : {'phone_number'}}

    Note: To know more about the claims supported by eSignet, go through our .

    • OAuth configuration's well-known endpoint is based on the below configuration property. This holds the map which is the same as the 's well-known spec. mosip.esignet.oauth.key-values

    • OIDC configuration well known endpoint is based on the below configuration property. This holds the map which is the same as the 's well-known spec. mosip.esignet.discovery.key-values

    Cache

    eSignet uses a cache to store all the details about UI transactions that are identified with a transaction ID. eSignet uses the spring-cache abstraction library. Hence eSignet could be connected with any spring-cache abstraction supported cache server.

    • By default, it is set to simple to use springs default in-memory cache spring.cache.type=simple

    • eSignet transitions the transaction details from one cache to another cache based on the transaction stage. Here is the list of caches maintained in eSignet mosip.esignet.cache.names=clientdetails,preauth,authenticated,authcodegenerated,userinfo,linkcodegenerated,linked,linkedcode,linkedauth,consented,authtokens,bindingtransaction,vcissuance

    • Property to set the max size of cache mosip.esignet.cache.size

    Note: This is applicable only for simple cache type

    • Property to set the Time To Live(TTL) per cache, applicable to both Redis and simple cache mosip.esignet.cache.expire-in-seconds

    Note: For cache other than redis and simple, based on the cache native TTL support a separate cache configuration should be added. Find the Redis cache config .

    Plugin Integrations

    In eSignet, we use runtime plugins to connect with external ID systems. As per design we only load one implementation of the plugin interface.

    The below properties define the plugin packages to be scanned and which implementations should be loaded into the spring context.

    • Comma-separated list of plugin implementation packages to scan by spring mosip.esignet.integration.scan-base-package=io.mosip.esignet.mock.integration

    • Authenticator plugin implementation is a conditional scanned bean based on the property below mosip.esignet.integration.authenticator=MockAuthenticationService

    • Key binder plugin implementation is a conditional scanned bean based on the property below mosip.esignet.integration.key-binder=MockKeyBindingWrapperService

    Note: Configuration properties for mock plugins and MOSIP IDA plugins are by default added to the application.properties file. Please refer to the below links: 1. 2.

    Key Manager

    The key manager connects with the configured keystore. Below are the configurations used:

    • Type of keystore, Supported Types: PKCS11, PKCS12, Offline, JCE mosip.kernel.keymanager.hsm.keystore-type=PKCS11

    • For PKCS11 provide Path of config file. For PKCS12 keystore type provide the p12/pfx file path. P12 file will be created internally so provide only the file path & file name. For Offline & JCE property can be left blank, and specified value will be ignored. mosip.kernel.keymanager.hsm.config-path=/config/softhsm-application.conf

    • Passkey of keystore for PKCS11, PKCS12.For Offline & JCE proer can be left blank. JCE passwords use other JCE-specific properties. mosip.kernel.keymanager.hsm.keystore-pass

    Note: Most of the other key manager configurations need not be changed.

    eSignet UI

    List of properties used by the eSignet UI to render the UI accordingly.

    • The below property holds the map of ui properties with default values mosip.esignet.ui.config.key-values.

    Here is the list of keys used in the mosip.esignet.ui.config.key-values property.

    SBI for Biometric Authentication

    • sbi.env - By default, SBI env is set to 'Develop'

    • sbi.port.range - Port range to scan for any running SBI

    • sbi.timeout.DISC - Timeout for SBI discovery endpoint in seconds

    Login Components

    • send.otp.channels - Comma-separated channels list, through which OTP will be sent

    • resend.otp.delay.secs - Timer to enable resend OTP button

    • otp.length - Length of the OTP

    Consent screen

    • consent.screen.timeout-in-secs - Timer on the consent page which will expire in the given second

    • consent.screen.timeout-buffer-in-secs - Buffer time for the consent screen expiry timer

    Captcha

    • captcha.enable - Comma-separated components list, where the captcha should be shown. Currently only supports the OTP page.

    • captcha.sitekey - Site Key used to generate captcha.

    v1.5.0

    Release Name: v.1.5.0

    Release Date: 23rd Jan, 2025

    Overview

    We are excited to announce the release of eSignet v1.5.0, featuring the key implementation of Identity Assurance 1.0 (Draft). This open standard enhances eSignet’s ability to verify and authenticate identities more assuredly, laying the foundation for the newly supported video-based eKYC verification plugin. In addition to this core feature, the release includes security fixes and several architectural updates to streamline workflows and enhance the overall user and developer experience.

    Features

      • Implemented Identity Assurance 1.0 (Draft), aligning with open standards for higher identity verification assurance, laying the foundation for video eKYC support.

      • Added video eKYC via WebSocket in the signup portal, enabling secure, real-time video verification during registration.

    Major Highlights

      • Removed artifactory and config Server dependencies, enabling local eSignet deployment via docker-compose for easier setup and environment management.

      • eSignet-plugins repository for better compatibility and functionality.

    Note: The Identity Assurance feature has been added in the eSignet 1.5.0 release, and is currently supported only with the mock identity system.

    Security Enhancements

    • Security issues have been addressed to enhance platform security and speed. For a complete list of fixed bugs, please refer to this .

    Bug Fixes

    • Several known issues from v1.4.1 have been resolved to improve platform stability. A detailed list of fixes is available .

    We believe this release will greatly improve eSignet's security, efficiency, and user experience. Thank you for your continued support!

    Key Known Issues

    Jira Issue
    Issue Description

    Please refer to for the list of all known issues.

    Repositories Released

    Repository Released
    Tags

    Compatible Modules

    Module/Repository
    Compatible Version

    Documentation

    v1.6.1

    Release Number: v1.6.1

    Release Date: 29th Jul, 2025

    Overview

    We’re excited to announce the upcoming release of , a major update packed with new features, improved configurability, and enhanced security. This version brings greater flexibility for Relying Parties (RPs) to customize login experiences, a revamped UI, and significant improvements to deployment processes.

    Features

    Explore eSignet’s powerful features for secure access.

    eSignet Auth is one of the two core modules within the eSignet. Purpose-built for identity authentication, eSignet Auth serves as a lightweight and flexible middleware layer between identity systems and service portals. It is designed to support secure, scalable, and privacy-conscious authentication workflows across a wide range of digital services—whether in government, finance, education, or enterprise environments.

    On-Demand Selection of Authentication Factors

    eSignet Auth allows service providers to define and configure authentication factors dynamically—based on user context, service sensitivity, or assurance levels. This modular approach supports flexible authentication journeys tailored to specific policy or risk requirements.

    $ git remote -v
    $ git clone https://github.com/<your_github_id>/esignet.git
    $ cd esignet
    $ git remote add upstream https://github.com/mosip/esignet.git
    $ git remote set-url --push upstream no_push
    $ git fetch upstream
    $ git checkout upstream/<branch> 
    $ git switch -c issue-<issue number>
    $ git pull upstream <branch> 
    $ git commit -m "[#1234] Adding new upload feature in eSignet service"
    $ git pull upstream <branch> 
    $ git push --set-upstream origin issue-<issue number>
    package sample;
    
    
    public class SampleAuthenticator implements Authenticator {
    
    
        /**
         * Step 1: Validate requested OTP channel
         * Called during the OIDC Authorization flow
         */
        public boolean isSupportedOtpChannel(String channel) {
             // 1. Define ALLOWED_CHANNELS and check if the 
             // requested channel is allowed.
             return ALLOWED_CHANNELS.contains(channel);
        }
    
        /**
         * Step 2: Send OTP to the user
         * Called during the OIDC Authorization flow
         */
        public SendOtpResult sendOtp(String relyingPartyId, String clientId, SendOtpDto sendOtpDto)
                throws SendOtpException {
                
             // 1. Generate OTP 
             // 2. Fetch email / mobile from ID system.
             // 3. trigger OTP notification
             // Note: You may use kernel-otpmanager and kernel-notification-service are MOSIP 
             // modules that provides this functionality.
             // Set and return the result, if failed throw SendOtpException
             
             SendOtpResult sendOtpResult = new SendOtpResult();
             sendOtpResult.setMaskedEmail(****);
             sendOtpResult.setMaskedMobile(****);
             return sendOtpResult;
        }
    
        /**
         * Step 3: Authenticate the user
         * Called during the OIDC Authorization flow
         */
        @Override
        public KycAuthResult doKycAuth(String relyingPartyId, String clientId, KycAuthDto kycAuthDto)
                throws KycAuthException {
    
            // 1. Extract authentication parameters
            String userId = kycAuthDto.getIndividualId();
            AuthChallenge authChallenge = request.getChallengeList().get(0);
    
            // 2. Validate credentials against Identity System
            // Note: It may be a endpoint call, direct DB access from this method.
            boolean authenticated = identitySystem.verify(
                userId,
                "OTP",
                authChallenge.getChallenge()
            );
    
            if (!authenticated) {
                throw new KycAuthException("AUTH_FAILED", "Invalid credentials");
            }
    
            // 3. Generate a KYC token for the input transactionId,
            // This token should be used to affirm that kyc-exchange is invoked only after
            // successful kyc-auth for the given transaction
            // For simplicity, using uuid as kyc token
            String kycToken = UUID.toString();
    
            // 4. Cache / store the transcation and kyc-token
    
            // 5. Build authentication success response
            KycAuthResult kycAuthResult = new KycAuthResult();
            kycAuthResult.setKycToken(kycToken);
    
            // 6. To support pairwise pseudorandom ID
            kycAuthResult.setPartnerSpecificUserToken(<hash(userId, relyingPartyId)>);
            
            return kycAuthResult;
        }
    
        /**
         * Step 4: Exchange KYC / Identity attributes
         * Called AFTER successful authentication & user consent
         */
        @Override
        public KycExchangeResult doKycExchange(String relyingPartyId, String clientId, KycExchangeDto kycExchangeDto)
                throws KycExchangeException {
    
            // 1. Validate request.getKycToken()
            // if invalid or expired throw KycExchangeException
            
            // 2. Fetch user identity for the given request.getIndividualId()
            // Throw exception if unable to find user or not allowed to as per relying party mapped policy.
    
            JWT userJWT = new JWT();
    
            // 3. 'sub' claim must hold the same value as value returned in the partnerSpecificUserToken
            userJWT.put("sub", "<hash(userId, relyingPartyId)>");
    
            for(String userClaim : requestedAttributes) {
              // 4. Add user claims to the JWT ONLY in the requested request.getClaimsLocales()
            }
    
            // 5. Sign the user JWT
            String signedJWT = ""
    
            String finalKyc = ""
            if(request.getUserInfoResponseType().equals("JWE")) {
              // 6. Additionally encrypt user JWS, using Relying party specific encryption public key.
              finalKyc = encrypt(signedJWT)
            }
    
            KycExchangeResult exchangeResult = new KycExchangeResult();
            exchangeResult.setEncryptedKyc(finalKyc);
            return exchangeResult;
        }
    
        /**
         * Step 5: Provide signing certificates (optional but common)
         * These keys are published in the eSignet .well-known/jwks.json
         */
        @Override
        public List<X509Certificate> getAllCertificates()
                throws CertificateException {
    
            // Return certificates corresponding to keys used
            // to sign KYC
            return keyStore.loadSigningCertificates();
        }
    }
     cp esignet-global-cm.yaml.sample esignet-global-cm.yaml
    ./initialise-prereq.sh
    ./install-esignet.sh
    Supported Authentication Methods:
    • Password-Based Login Traditional username and password login, with optional UI settings such as enabling or hiding the 'Forgot Password' link.

    • OTP (One-Time Password) Authentication One-time codes sent via SMS or email for time-bound access—especially suitable in contexts where biometrics or wallets are unavailable.

    • Knowledge-Based Identification (KBI) Authentication via answers to identity-based questions, ideal for low-connectivity or limited-device scenarios.

    FAQ Highlights for KBI:

    • How to configure KBI form in eSignet UI?

    • How is the authenticator plugin implemented for KBI with Sunbird RC?

    Configurable KBI Form (UI Schema–Driven)

    eSignet’s KBI authentication flow now supports dynamic, UI Schema–based form rendering, replacing the earlier fixed and static field layout. Relying Parties can now configure and adapt the KBI form fields as per their verification needs, offering greater flexibility and customization without code changes.

    For detailed configuration and supported input types, please refer to the technical guide on GitHub.

    • Biometric Authentication Authentication using biometrics through devices compliant with IEEE P3167 SBI 2.0 standards.

      • On-Demand Selection of Biometric Modalities

    Service providers can selectively enable biometric modalities—such as facial recognition, fingerprint, or iris scan—based on device capabilities, assurance needs, or user preferences.

    • Wallet-Based QR Code Login Authenticate by scanning a QR code with a mobile wallet containing pre-verified credentials. Optional face recognition within the wallet confirms user presence.

    All authentication flows are fully configurable via the eSignet Auth UI, making it easy to implement diverse login journeys across user segments and assurance levels.

    Verifiable Credentials

    eSignet supports Verifiable Credentials (VCs)—digital versions of official documents like passports, certificates, or licenses. These credentials are issued by trusted authorities, digitally signed to prevent tampering, and stored securely in digital wallets. They allow individuals to prove their identity and access services quickly and reliably.

    Note : VCI is supported up to eSignet v1.4.2. Going forward, VCI support is provided through Inji Certify. Please refer to Inji Certify for the latest implementation.

    Consent Management

    eSignet Auth enables fine-grained control over user consent, ensuring transparency and compliance with privacy standards.

    Key Consent Features:

    • Re-Consent: Automatically prompt users for re-consent when claim scopes change or when existing consent has expired.

    • Consent Storage All user consents are stored in a built-in Consent Registry, providing auditability and control for both users and service providers.

    • Consent Expiry Configuration Define how long a user’s consent remains valid—per session, per time window, or indefinitely.

    • Configuring Claims Supports all standard claims as defined by the OpenID Connect (OIDC) protocol. Custom claim configurations can be set depending on authentication requirements or service needs.

    • Configurable Consent Consent behavior can be tailored per flow or service with the following options:

      • Enforce Mandatory Consent: Force consent collection regardless of previous user decisions.

      • Re-consent: Request users to consent again, useful for policy updates or critical changes.

      • Bypass Consent: Skip the consent step entirely where it's not necessary.

    FAPI 2.0 Security Profile Compliance

    What is the FAPI 2.0 Security Profile?

    The FAPI (Financial-grade API) 2.0 Security Profile is a set of standards and best practices built on OAuth2/OpenID Connect to deliver high-assurance, interoperable, and phishing-resistant API and authentication flows. FAPI 2.0 is widely adopted in high-risk industries (banking, government IDM, digital public infrastructure) where confidentiality, integrity, and client assurance must be provable and enforceable.

    Why we implemented FAPI 2.0 in eSignet?

    eSignet handles high-assurance identity and authentication transactions. Adopting FAPI 2.0 raises the baseline security posture by addressing real-world risks in front-channel flows, token misuse, and server impersonation. Implementing FAPI features helps eSignet better protect sensitive claims and tokens, reduce the attack surface for authorization flows, and improve interoperability with partner systems that already follow financial-grade security practices.

    RFCs implemented

    To align eSignet with the FAPI 2.0 profile, v1.7.0 introduces support for three RFCs that together harden authorization flows:

    • Pushed Authorization Requests (PAR) — moves authorization requests from the browser front-channel to a secure server-to-server POST. PAR prevents exposure and tampering of authorization parameters (redirect URIs, scopes, claims) in browser URLs and ensures the authorization server processes exactly what the client intended.

    • Demonstrating Proof-of-Possession (DPoP) — binds access tokens to a client-held cryptographic key and requires the client to present a signed, per-request proof. DPoP makes stolen tokens unusable by third parties and prevents replay or misuse of intercepted tokens.

    • Authorization Server Issuer Identification (OIDC Metadata checks) — enforces clear, verifiable issuer metadata so clients can confirm they are interacting with the intended authorization server. This prevents environment mix-ups and server impersonation attacks (e.g., sandbox vs production confusion or malicious endpoints).

    FAPI 2.0 For a deeper understanding of FAPI 2.0 and the mechanisms implemented in eSignet, see the FAPI 2.0 Security Profile specification: https://openid.net/specs/fapi-security-profile-2_0-final.html.

    Attacker model and mitigations with FAPI 2.0

    FAPI 2.0 defends high-risk OAuth/OIDC flows against tampering, mix-up, phishing, token theft/replay, and leakage via front-channel exposure. To know more about this refer here

    Customizable UI

    eSignet Auth provides an adaptable and customizable UI framework that allows service providers to align the authentication interface with their brand, user flow, and assurance requirements.

    UI Customization Capabilities:

    • Purpose Display Configuration:Clearly indicate the intent of the action—e.g., Login, Verify Identity, or Link Account—to guide user interaction.

    • Multiple Login ID Options: Enable users to choose from different login identifiers such as email, phone number, or username—improving accessibility across user segments.

    • Theme and Layout Customization: Tailor look and feel to match your portal’s branding, including colors, logos, fonts, and button styles.

    • Context-Aware UI Behavior: Adjust UI flow based on user type, assurance level, or chosen authentication factor (e.g., show/hide biometric prompts or OTP inputs dynamically).

    Language Support

    To ensure inclusive access for diverse user groups, eSignet offers multilingual UI support. Out-of-the-box language options include Arabic, English, Hindi, Kannada, and Tamil. Additional languages can be easily integrated to meet specific country or regional requirements.

    How to add a new language to eSignet?

    How to remove a language from the eSignet default setup?

    MOSIP plugin

    Example: https://example.com/path/to/kbi_schema.json

    eSignet uses logback for logging. The
    log level
    of the application can be easily changed with this property.
    logging.level.io.mosip.esignet=INFO
  • Audit plugin implementation is a conditional scanned bean based on the property below mosip.esignet.integration.audit-plugin=LoggerAuditService

  • sbi.timeout.DINFO - Timeout for SBI device info endpoint in seconds
  • sbi.timeout.CAPTURE - Timeout for SBI capture endpoint in seconds

  • sbi.capture.count.face - count is set to 1

  • sbi.capture.count.finger - Number of fingers to be captured

  • sbi.capture.count.iris - Number of iris to be captured

  • sbi.capture.score.face - Quality score threshold for face

  • sbi.capture.score.finger - Quality score threshold for finger

  • sbi.capture.score.iris - Quality score threshold for iris

  • sbi.bio.subtypes.iris - Biometric attribute name to be captured, otherwise it is set to 'UNKNOWN'

  • sbi.bio.subtypes.finger - Biometric attribute name to be captured, otherwise it is set to 'UNKNOWN'

  • password.regex - Regex for UI validation
  • linked-transaction-expire-in-secs - Number of seconds allowed for a linked transaction to complete in the wallet APP.

  • wallet.qr-code-buffer-in-secs - New QR code will be autogenerated before the expiry of the current QR code, this property defines the time difference in seconds.

  • wallet.qr-code.auto-refresh-limit - Limit for the QR code auto-refresh.

  • wallet.config - List of wallets to be displayed for QR code-based login

  • claims documentation
    oauth-authorization-server
    openid-configuration
    here
    Mock Plugin properties
    MOSIP Plugin properties
  • Well-Informed Claim Details

    • Users now receive clear consent requests before starting eKYC, ensuring transparency on data usage.

  • Clickable QR Code for INJI Wallet Login

    • A clickable QR code now appears for INJI Wallet login, with an embedded deeplink for seamless access within the same device.

  • Captcha Validation Improvements

    • Enhanced captcha validation for improved security and fewer vulnerabilities.

  • VC Issuance migration to Inji Certify

    • eSignet no longer supports VC issuance. This functionality was supported up to eSignet v1.4.2. INJI Certify now handles VC issuance. The documentation has been updated to reflect this change.

  • ES-1992

    OAuth Details API is initiating the transaction despite a mismatch between the aud claim in the provided ID token and the clientId

    ES-1986

    IDT based authentication is successful on using reused challenge.

    ES-1981

    The system is not checking for an available slot every “6” seconds, for a max of “10” time while the loading screen is displaying

    ES-1977

    Individual ID is not validated with IDT auth factor

    esignet

    v1.5.0

    esignet-signup

    v1.1.0

    esignet-mock-services

    v0.10.0

    esignet-plugins

    v1.3.0

    mosip-onboarding

    v1.3.0-beta.1

    IDA

    1.2.1.0

    ID Repository

    1.2.1.0

    Kernel

    1.2.0.1

    Sunbird

    v2.0.0-rc3

    Identity Assurance Implementation
    Signup and Login with OTP for Verified Claims
    Local Deployment with Docker-Compose
    eSignet-Plugins Repository Updates
    link
    here
    this link
    API Documentation
    Integration Guides
    End User Guide
    QA Report
    ES-2506
    ES-2491
    v1.6.2
    v1.2.2
    v0.11.2
    v1.3.3
    1.2.2.1
    1.2.1.0
    v2.0.0-rc3
    1.2.1.0
    1.2.1.0

    Recaptcha validation

  • Multiple instances of eSignet

  • Cross-browser testing: eSignet flow verification in different browsers (Chrome, Microsoft Edge, Firefox, Safari)

  • 3 Lang configuration

    Total

    Passed

    Failed

    Skipped

    817

    765

    7

    45

    Total

    Passed

    Failed

    Skipped

    563

    558

    5

    0

    Total

    Passed

    Failed

    Skipped

    84

    63

    21

    0

    detailed test report

    15.6

    750 x 1334 pixels

    4.7 inches

    Vivo y73

    chrome

    120.0.6099.193

    Android 13

    1080x2400 pixels

    6.44 inches

    Redmi 7A

    chrome

    120.0.6099.145

    Android 10

    720x1440 pixels

    5.45 inches

    Samsung Galaxy S5

    chrome

    120.0.6099.145

    Android 4.4.2

    1080 x 1920 pixels

    5.1 inches

    Moto G4

    chrome

    120.0.6099.145

    Android 6.0.1

    1080 x 1920 pixels

    5.5 inches

    eSignet

    1.2.0

    release-1.2.x

    89.1

    0

    0

    0

    0.5%

    Total

    Passed

    Failed

    Skipped

    1424

    1293

    47

    84

    Total

    Passed

    Failed

    Skipped

    5197

    5066

    131

    0

    id-authentication

    1.2.0.1-B5

    release-1.2.0.1

    70.9

    0

    0

    0

    detailed test report
    Test report 1.2.0

    1.9%

    .
  • Monitoring : Setup monitoring consisting elasticsearch, kibana, grafana using steps.

  • redirect-uri

  • client-name

  • client-id

  • Update the Base64-encoded client-private-key in the mock-relying-party service secret.

    steps
    steps
    steps
    steps
    steps
    steps
    steps
    steps
    Recaptcha Admin
    steps
    ./install-prereq.sh
    Version Note:

    eSignet v1.6.1 is a patch release over the originally planned v1.6.0, addressing critical deployment-related bug fixes. It is the latest official version following eSignet v1.5.1.

    Major Highlights

    New Features

    • Prefix & Postfix support for Choice of Login ID Configure login ID types (Email, Phone, VID, etc.) as per relying party (RP) needs. Comes with a revamped, more intuitive UI.

    • Customizable Client Configuration Enhanced client management endpoint with additional options for better customization and control of eSignet's behavior.

    • Purpose-Based eSignet UI UI dynamically adapts titles and tile subtitles based on the context and purpose of the service, providing a more relevant user experience.

    Enhancements

    • JTI Mandatory in Client Assertion JTI is now a required parameter in the client assertion JWT in token endpoint for improved security.

      ⚠️ Breaking Change: Existing relying parties (RPs) must include the jti claim to share consented claims successfully.

    • Unique nonce for each transaction: nonce query parameter in the authorize url should be unique for each transaction.

      ⚠️ Breaking Change: If duplicate nonce is found “invalid_request“ error is thrown.

    • Updated Vulnerable Libraries Security has been bolstered by updating dependencies and patching known vulnerabilities.

    • Upgraded installation scripts provide a smoother experience for new deployments of eSignet.

    Features Released

    Feature
    Jira

    Prefix & Postfix support for Choice of Login ID

    Customizable Client Configuration

    Purpose-Based eSignet UI

    Deployment Script Update

    Security Enhancements

    Library Upgrades for Vulnerability Fixes:

    Dependencies in eSignet service have been upgraded to fix known vulnerabilities.

    Bug Fixes

    Several known issues from the previous release have been addressed to improve platform stability and performance.

    Please refer to the link here for the complete list of resolved issues.

    Key Known Issues

    Jira Issue
    Summary

    Verified Consented claims are not returned in userinfo response in MOSIP IDA

    Getting invalid_request when the additional_config is added for the client

    Please refer to link here for the full list of known issues.

    Repositories Released

    Repository
    Tags

    esignet

    esignet-signup

    esignet-mock-services

    esignet-plugins

    Compatibility Matrix

    eSignet with MOSIP compatibility matrix

    Module/Repo
    Compatible Version

    ID Authentication

    PMS

    eSignet with Sunbird compatibility matrix

    Module/Repo
    Compatible Version

    Sunbird

    Signup with MOSIP compatibility matrix

    Module/Repo
    Compatible Version

    ID Repository

    Keymanager

    PMS

    Config Changes

    eSignet

    1. Added the following configurations to provide a structured and flexible approach to supporting multiple login ID types:

    mosip.esignet.ui.config.login-id.options=

    mosip.esignet.ui.config.login-id.options=

    Allows customization for each ID type, including options such as:

    • Prefixes (e.g., country codes for mobile numbers)

    • Associated icons for improved UI experience

    • Validation rules, such as regular expressions or length constraints

    1. Property to configure additional config schema

    mosip.esignet.additional-config.schema.url

    Please refer here for details.

    eSignet Mock Services

    1. Property to configure the url to fetch the schema of additional config

    mosip.mock.ui-spec.schema.url

    Please refer here for details.

    Database Changes

    eSignet

    1. New column: additional_config of type jsonb added to the client_detail table for storing flexible JSON configuration data.

    2. Increased length of name column in the client_detail table to 600 characters to support longer client names.

    Please refer here for details.

    eSignet Mock Services

    1. Modified the identity_json column in the client_detail table to use VARCHAR without a length limit, allowing for variable-length string data of unlimited size.

    Please refer here for details.

    Documentation

    API Documentation

    • eSignet API (v1.6.1)

    • Signup API (v1.2.1)

    Integration Guides

    • eSignet Integration Guide

    • Signup Integration Guide

    End User Guides

    • eSignet End User Guide

    • Signup End User Guide

    QA Report

    eSignet v1.6.1

    Test Report

    Testing Scope

    The scope of testing is to verify fitment to the specification from the perspective of

    ● Functionality

    ● Deployability

    ● Configurability

    ● Customizability

    Verification is performed from the end user perspective and the System Integrator (SI) point of view. Hence, the software's Configuration and Extensibility are also assessed. This ensures the software's readiness for use in multiple countries. Since MOSIP is an “API First” product platform, the Verification scope required comprehensive automation testing for all the MOSIP APIs. An automation Test Rig was created for the same.

    Roadmap 2024

    Q1: Jan'24 - Mar'24

    Q2: Apr'24 - Jun'24

    Q3: Jul'24 - Sep'24

    Q4: Oct'24 - Dec'24

    eSignet

    Quarter
    Feature
    Status
    GitHub - mosip/esignet-plugins: Repository hosting source code for esignet java runtime dependencies pluginsGitHub
    GitHub - mosip/esignet-mock-services: Repository contains mock implementation of auth for e-signetGitHub
    GitHub - mosip/esignet-signupGitHub
    GitHub - mosip/esignet: Open ID based e-Signet service for large scale verification & authentication.GitHub
    Improved Deployment Scripts
    ES-1665
    ES-1655
    ES-216
    MOSIP-40529
    ES-2317
    ES-2359
    v1.6.1
    v1.2.1
    v0.11.1
    v1.3.2
    1.2.1.0
    1.2.2.1
    v2.0.0-rc3
    1.2.2.1
    1.2.1.0
    1.2.2.1

    Test Approach

    A persona-based approach has been adopted to perform the IV&V by simulating test scenarios that resemble a real-time implementation.

    A Persona is a fictional character/user profile created to represent a user type that might use a product/or a service in a similar way. Persona based testing is a software testing technique that puts software testers in the customer's shoes, assesses their needs from the software, and thereby determines use cases/scenarios that the customers will execute. The persona’s needs may be addressed through any of the following.

    • Functionality

    • Deployability

    • Configurability

    • Customizability

    The verification methods may differ based on how the need was addressed.

    For regression check, “MOSIP Test Rig” - an automation testing suite - is designed and developed to support persona-based testing. MOSIP Test Rig covers the end to end test execution and reporting. The end to end functional test scenarios are written starting from pre-registration, to creating the packet in the registration center, processing the packet through the registration process, generating UIN, and authenticating identity using IDA through various permutations and combinations of cases being covered. MOSIP Test Rig will be an open source artifact that can also be enhanced and used by countries to validate the SI deliveries before going live. Persona classes include both negative and positive personas. Negative persona classes include users like Bribed Registration Office, Malicious Insider, etc. The needs of positive persona classes must be met, whereas the software must effectively restrict the needs of negative persona classes.

    Verified configuration

    Verification is performed on various configurations as mentioned below

    • Default configuration - with 7 Languages (English/Khmer/Hindi/Kannada/Tamil/Arabic/French)

    Main feature tested

    • Signup Portal with mock ID

    • Login with a Password with a mock ID

    • Forgot Password with mock ID

    • Login with Otp with a mock ID

    • Login with biometrics with mock ID

    • Login with KBI with a mock ID

    • Identity verification process with mock ID

    • Signup Portal with Mosip IDA

    • Login with Password with Mosip IDA

    • Forgot Password with Mosip IDA

    • Login with Otp with Mosip IDA

    • Login with biometrics Mosip IDA

    • Login with KBI with Mosip IDA

    Feature Health

    Feature Health

    Functional test results

    Below are the test metrics by performing functional testing using mock MDS, mock Auth, and mock ABIS. The process followed was black box testing which based its test cases on the specifications of the software component under test. The functional test was performed in combination with individual module testing as well as integration testing. Test data were prepared in line with the user stories. Expected results were monitored by examining the user interface. The coverage includes GUI testing, System testing, End-To-End flows across multiple languages and configurations. The testing cycle included the simulation of multiple identity schema and respective UI schema configurations.

    Total
    Passed
    Failed
    Skipped

    2928

    2785

    97

    46

    Test Rate: 98% with Pass rate: 96%

    Here is the detailed breakdown:

    API Based Testing - eSignet:

    Total Test Cases
    Passed
    Failed
    Skipped

    1934

    1829

    79

    26

    UI Based Testing:

    Total Test Cases
    Passed
    Failed
    Skipped

    994

    956

    18

    20

    API Testrig results for eSignet and Signup with Mock ID

    API Based Testrig - eSignet:

    Total Test Cases
    Passed
    Failed
    Skipped
    Ignored

    813

    445

    0

    0

    368

    API Based Testrig - eSignet-signup:

    Total Test Cases
    Passed
    Failed
    Skipped
    Ignored

    554

    516

    34

    4

    0

    Note:

    • In API Based testing - 26 test cases are marked as skipped as they were not automated and cannot be tested using Postman.

    • In UI Based testing - 20 test cases are marked as skipped as they were out of scope for the release.

    • In API Based Testrig - eSignet, 368 testcases are marked as ignored as VID is not supported.

    Detailed Test metrics:

    Below are the detailed test metrics by performing manual/automation testing. The project metrics are derived from Defect density, Test coverage, Test execution coverage, test tracking, and efficiency.

    The various metrics that assist in test tracking and efficiency are as follows:

    • Passed Test Cases Coverage: It measures the percentage of passed test cases. (Number of passed tests / Total number of tests executed) x 100

    • Failed Test Case Coverage: It measures the percentage of all the failed test cases. (Number of failed tests / Total number of test cases executed) x 100

    Device and Browser details:

    Device
    Browser
    OS version
    Display resolution
    Screen size

    Oppo A96 v11.0

    Chrome

    Android, v11.0

    1080x2412 px

    6.59

    Samsung Galaxy S8 v7.0

    Fire fox

    Android, v7.0

    1440 x 2960 px

    5.8

    Desktop browser specification

    Browser Compatibility for desktop and mobile:

    OS
    Version

    Google Chrome

    118. 0.5993.72 and above

    Firefox

    118.0.2 and above

    Edge

    118.0.2088.46 and above

    Safari

    14.1 and above

    Sonar Report

    Repository Name
    Branch Name
    Release Version (POM)
    Coverage (>80%)
    Reliability (0)
    Security (0)
    Hotspots (0)
    Duplications (Less than 3%)

    eSignet

    release-1.5.x

    v1.5.0

    86.8%

    0

    0

    0

    Feature Details
    Release Details

    Q1

    Password based authentication

    Completed

    Q1

    Unified Login Portal, Inclusion of custom handle - Phone number

    Completed

    Q2

    1. Support for Sunbird Integration

    2. Knowledge based Identification

    Completed

    Q2

    1. Configuration capability for Knowledge based Identification

    2. Authenticator plugin Implementation for KBI and VC issuance plugin implementation

    3. Regex validations implementation for KBI

    v1.7.0

    Release Number: v1.7.0

    Release Date: 2nd December, 2025

    Overview

    We’re excited to announce the release of , a feature-rich upgrade over v1.6.1 that introduces major advancements in security, enhanced user interaction flexibility, and improved deployment efficiency. This release includes full support for the , implemented through multiple industry-standard RFCs, and brings dynamic, schema-driven UI enhancements for both Signup and KBI authentication—while ensuring complete backward compatibility with existing authentication flows.

    Completed

    KBI Configuration

    v1.4.1

    Q3

    Profile Management

    Conduct e-KYC on registered users, capability to confirm user identity through additional details.

    Completed

    L2 User flow - Enable user to complete e-KYC

    v1.5.0

    Q3 - Q4

    1. eSignet Java 21 migration changes

    Moved to 2025

    Java 21 migration changes for eSignet

    v1.4.3

    Q3 - Q4

    1. L1 performance fixes

    2. eSignet deployment fixes

    Moved to 2025

    L1 performance fixes

    v1.4.2

    Q4

    Support for identity brokering

    It is capable of integrating with multiple ID providers for unified user authentication.

    Moved to 2025

    Support for identity brokering

    v1.6.0

    Q1-Q4

    Re-consent

    Renew user consent for updates and modifications.

    Moved to 2025

    Re-Consent in MOSIP

    Q1-Q4

    UI enhancements

    Dynamic UI pages tailored to specific use cases- Verify / Link / Login.

    Moved to 2025

    eSignet UI change based on different use cases

    Q1-Q4

    Revamped QR code / wallet-based login using OpenID4VP & SIOP v2 for a secure and streamlined authentication experience.

    Moved to 2025

    Revamp the QR code / wallet based login using OpenID4VP or SIOP v2

    Q1-Q4

    Revocation of VC

    New ability to invalidate and manage credentials for security purposes.

    Moved to 2025

    Revocation of VC

    Q1-Q4

    Support for Key Manager - EDD and EC signature.

    Moved to 2025

    Key Manager - EDD and EC Signature

    Q1-Q4

    Verifiable Credential issuance

    Support for Verifiable Credential issuance formats like Self-Issued JWT (SDJWT), JSON Web Token (JWT), CBOR Web Token (CWT), JavaScript Object Notation (JSON), Credential Handler API (CHAPI), JSON Linked Data (JSONLD)

    Moved to 2025

    Support for multiple Verifiable Credential issuance formats

    Q1-Q4

    Support for pre-authorized code flow in OID4VCI

    Integrating pre-authorized code flow in OID4VCI framework to securely obtain and exchange Verifiable Credentials.

    Moved to 2025

    Support for pre-authorized code flow in OID4VCI

    Q1-Q4

    eSignet UI: FAPI 2.0 compliance analysis

    Capabilities to adapt to Financial-grade API (FAPI) 2.0 standards for enhanced security.

    Moved to 2025

    eSignet-UI: FAPI 2.0 compliance analysis

    Q1-Q4

    Consent Management

    End user can view, manage, and edit consented user information.

    Moved to 2025

    User Consent Management by end user

    Q1-Q4

    Support for Client-Initiated Backchannel Authentication (CIBA).

    Moved to 2025

    Additional authentication factor: CIBA

    Q1-Q4

    Support for WebAuthN API.

    Moved to 2025

    Additional authentication factor: WebAuthN

    Q1-Q4

    Support for 2-Factor authentication (2FA).

    Moved to 2025

    Additional authentication factor: TOTP using authenticator app

    Q1-Q4

    Support for Token Introspection.

    Moved to 2025

    Introspect Endpoint

    Password based authentication
    v1.3.0
    Unified-login-portal
    v1.3.0
    Sunbird RC Integration
    v1.4.0
    Logo

    Redmi 6A

    edge, chrome & firefox

    Android, v9.0

    1440 x 720 px

    5.45

    iPhone XS v15.3

    safari

    iOS, v15.3

    1125 x 2436 px

    5.8

    iphone 7

    safari, chrome, firefox & edge

    15.6

    750x 1334 px

    4.7

    Oppo Reno12 Pro

    chrome

    Android 14

    1080 x 2412 pixels

    6.7

    Redmi A1

    chrome

    Android 12

    720 x 1600 pixels

    6.52

    Iphone 15 Plus

    Safari

    IOS 18

    2796x1290 pixels

    6.7

    MOSIP's MacBook Air

    Safari

    Sonoma 14.6.1

    2560*1664

    13.6

    Nokia T10

    chrome

    Android 14

    800 x 1280 pixels

    8

    0%

    eSignet Signup

    release-1.1.x

    v1.1.0

    81.2%

    0

    0

    0

    0%

    Major Highlights

    New Features

    Support for FAPI 2.0 Security Profile

    eSignet now implements key RFCs required for FAPI 2.0 compliance, strengthening security and interoperability:

    • Pushed Authorization Request (PAR) – A new PAR endpoint is introduced to support secure, tamper-resistant authorization requests.

    • Demonstration of Proof of Possession (DPoP) – Adds cryptographic proof-of-possession for access tokens, preventing token replay attacks.

    • Authorization Server Issuer Identification – Enhances security by enabling the ‘Authorization Server’ to uniquely identify itself during authorization flows; includes updates to configurations in oauth authorization server well-known.

    Tips:

    FAPI 2.0 support is now fully enabled in eSignet. However, enforcement of the FAPI 2.0 security profile is client-configurable. Each client can choose whether or not to enable FAPI 2.0 for their integrations. If a client does not enforce the FAPI 2.0 profile, their authentication flows will continue to work seamlessly without any change.

    Enhancements

    Dynamic Schema-Driven Signup UI

    The Signup UI has been improved and can now be generated dynamically based on a backend-driven UI schema. This leverages a JSON form-builder library for improved flexibility and faster configuration changes.

    Dynamic Schema-Driven KBI Authentication UI

    The KBI authentication UI is now also fully dynamic and powered by the same schema-based JSON form builder, enhancing consistency and maintainability.

    Improved Deployment Scripts

    Deployment scripts for the eSignet service have been refined to simplify setup, reduce configuration overhead, and ensure smoother deployments across environments.

    Bug Fixes

    Several known issues from the previous release have been addressed to improve platform stability and performance. Please refer to the link here for the complete list of resolved issues.

    Jira ID
    Summary

    Deployment : Not able to complete the sanity, after registration getting the error "Unable to process. Please try again".

    Deployment : signup captcha is not working, throwing an error "The captcha you entered is incorrect. Please try again".

    Deployment : esignet image is not getting updated to mosipqa/esignet-with-plugins:1.7.x its taking develop branch image.

    Deployment : In init_values.yaml branch is pointing to develop branch instead of release-1.7.x.

    Deployment : Still keyclock postgres image is pointing to bitnami.

    Docker-compose : In mock-relying-party-portal-fapi2-docker-compose.yml volumes: are not given.

    Known Issues

    Please refer here for full list of known issues.

    Jira ID
    Summary

    esignet mosip id SendBindingOtp and WalletBinding test cases are failing with "errorCode": "IDA-MLC-018".

    In mock when we are providing "trust_framework": null we are getting the user info response for first claim.

    Update documentation for partner-onboarding/esignet.

    Update keycloak init scripts in esignet-signup.

    Issue in partner on boarder script for eSignet.

    Partner on boarder script issue in esignet-signup.

    Story Development

    Story ID
    Description

    eSignet - Signup - Add a new endpoint to support the multi-part data.

    Signup Module - Signup UI registration Form - Add support to capture the face photo for the user.

    Authorization Server Issuer Identification for FAPI 2.0 Compliance.

    Add Support for additional Config in client management endpoint.

    Push Authorization request (PAR) - FAPI 2.0 Compliance - Add a new authorize url to process request with clientid and request uri.

    Push Authorization request (PAR) - FAPI 2.0 Compliance - New endpoint development to initiate PAR flow.

    Repositories Released

    Repository
    Tag

    esignet

    esignet-signup

    esignet-mock-services

    esignet-plugins

    Compatible Modules

    eSignet compatibility with MOSIP

    Module/Repo
    Compatible Version

    PMS

    IDA

    1.3.x (for identity assurance 1.0 support)

    eSignet compatibility with Sunbird

    Module/Repo
    Compatible Version

    Sunbird

    eSignet Signup compatibility with MOSIP

    Module/Repo
    Compatible Version

    ID Repository

    1.3.x (for identity assurance 1.0 support)

    otpmanager

    kernel-notification-service

    auditmanager

    DB Changes

    • eSignet Mock Identity System:

      • Please refer the link here for the DB upgrade script

      • Please refer the link here for the DB rollback script

    Config Changes

    • eSignet: The properties listed below are newly added to the eSignet default configuration. For a comprehensive view of all configuration properties in eSignet, please refer here.

      • mosip.esignet.par.expire-seconds=60

      • mosip.esignet.par.request-uri.prefix=urn:ietf:params:oauth:request_uri:

      • mosip.esignet.dpop.clock-skew=10

      • mosip.esignet.dpop.nonce.expire.seconds=15

      • mosip.esignet.kbispec.ttl.seconds=18000

      • mosip.esignet.client-assertion.unique.jti.required=true

    • Signup: The properties listed below are newly added to the Signup default configuration. For a comprehensive view of all configuration properties in eSignet, please .

      • mosip.signup.uispec.ttl.seconds=18000

    Documentation

    API Documentation

    • eSignet API (v1.7.0)

    • Signup API (v1.3.0)

    Integration Guides

    • eSignet Integration Guide

    • Signup Integration Guide

    End User Guides

    • eSignet End User Guide

    • Signup End User Guide

    QA Report

    eSignet v1.7.0
    FAPI 2.0 Security Profile

    Test Report

    Testing Scope

    The scope of testing is to verify fitment to the specification from the perspective of

    • Functionality

    • Deployability

    ES-2659

    Linux : Docker Compose fails to start containers — “failed to extract layer” error.

    ES-2632

    eSignet-MOSIP: User is unable to complete eKYC verification in MOSIP-ID plugin.

    ES-2629

    esignet mock: Captcha is enabled but its not displayed in UI, but checking for captcha in UI and we are getting this error while signing up.

    ES-2588

    In mock : KBI Login is not working.

    ES-2577

    eSignet-MOCK: fetchUserInfo fails with error "Failed to get the User Info." when DPoP and PAR are disabled.

    ES-2574

    eSignet-MOSIP-ID: User is unable to register in signup-mosipid-qabase.

    ES-2556

    JWKS.json returning incorrect userinfo signing certificate.

    ES-2297

    Sender constrained tokens using DPOP for FAPI 2.0 security profile compliance.

    ES-2058

    Enhance KBI form in eSignet UI.

    ES-1644

    Registration form on the eSignet sign-up page should dynamically adjust its fields and layout based on a predefined UI schema.

    refer here
    ES-2702
    ES-2691
    ES-2683
    ES-2678
    ES-2677
    ES-2665
    ES-2716
    ES-2709
    MOSIP-43956
    MOSIP-43957
    MOSIP-43958
    MOSIP-43960
    ES-2589
    ES-2429
    ES-2379
    ES-2346
    ES-2333
    ES-2296
    v1.7.0
    v1.3.0
    v0.12.0
    v1.3.4
    1.2.2.1
    1.2.1.0
    v2.0.0-rc3
    1.2.1.0
    1.2.0.1
    1.2.0.1
    1.2.0.1

    Configurability

  • Customizability

  • Verification is performed not only from the end user perspective but also from the System Integrator (SI) point of view. Hence, the Configurability and Extensibility of the software is also assessed. This ensures the readiness of software for use in multiple countries. Since MOSIP is an “API First” product platform, Verification scope required comprehensive automation testing for all the MOSIP APIs. An automation Test Rig is created for the same.

    Test Approach

    Persona based approach has been adopted to perform the IV&V, by simulating test scenarios that resemble a real-time implementation.

    A Persona is a fictional character/user profile created to represent a user type that might use a product/or a service in a similar way. Persona based testing is a software testing technique that puts software testers in the customer's shoes, assesses their needs from the software and thereby determines use cases/scenarios that the customers will execute. The persona needs may be addressed through any of the following.

    • Functionality

    • Deployability

    • Configurability

    • Customizability

    The verification methods may differ based on how the need was addressed.

    For regression check, “MOSIP Test Rig” - an automation testing suite - which is indigenously designed and developed for supporting persona based testing. MOSIP Test Rig covers the end to end test execution and reporting. The end to end functional test scenarios are written starting from pre-registration, to creation of packet in registration center, processing the packet through the registration processor, generating UIN and authenticating identity using IDA through various permutation and combinations of cases being covered. MOSIP Test Rig will be an open source artifact which can also be enhanced and used by countries to validate the SI deliveries before going live. Persona classes include both negative and positive personas. Negative persona classes include users like Bribed Registration Office, Malicious Insider etc. The needs of positive persona classes must be met, whereas the needs of negative persona classes must be effectively restricted by the software.

    Verified configuration

    Verification is performed on various configurations as mentioned below

    Default configuration -

    • eSignet with 7 languages (English/Khmer/Hindi/Kannada/Tamil/Arabic/French)

    • Signup with 2 languages (Khmer/English)

    Main feature tested:

    • Signup Portal with mock ID

    • Login with Password with mock ID

    • Forgot Password with mock ID

    • Login with OTP with mock ID

    • Login with biometrics with mock ID

    • Login with KBI with mock ID

    • Identity verification process (L2 flow) with mock ID

    • Signup Portal with MOSIP IDA

    • Login with Password with MOSIP IDA

    • Forgot Password with MOSIP IDA

    • Login with OTP with MOSIP IDA

    • Login with biometrics MOSIP IDA

    • Sunbird Plugin with MOSIP IDA

    • Critical and Blocker Bugs verification

    • Docker Compose testing for eSignet and signup (windows, Linux and Mac)

    Feature Health

    Test execution statistics

    Functional test results

    Below are the test metrics by performing functional testing using mock MDS, mock Auth and mock ABIS. The process followed was black box testing which based its test cases on the specifications of the software component under test. The functional tests were performed in combination of individual module testing as well as integration testing. Test data were prepared in line with the user stories. Expected results were monitored by examining the user interface. The coverage includes GUI testing, System testing, End-To-End flows across multiple languages and configurations. The testing cycle included simulation of multiple identity schema and respective UI schema configurations.

    Total
    Passed
    Failed
    Skipped

    3183

    3110

    38

    35

    Test Rate: 98% with Pass rate: 98%

    Here is the detailed breakdown:

    Test cases
    Total

    API Based Testing - eSignet

    2017

    Passed

    1962

    Failed

    20

    Skipped

    35

    API Testrig results for eSignet and Signup with Mock ID:

    Test cases
    Total

    API Based Testrig - eSignet

    Total

    1011

    Passed

    93

    Failed

    0

    Skipped

    0

    API Testrig results for eSignet and Signup with MOSIP ID:

    Test cases
    Total

    API Based Testrig - eSignet

    1011

    Passed

    842

    Failed

    0

    Skipped

    0

    API Testrig results for eSignet and Signup with Sunbird:

    API Based Testrig - Sunbird

    1011

    Passed

    93

    Failed

    0

    Skipped

    0

    Ignored

    918

    Note: In API Based testing, 35 test cases are marked as skipped as they were not automated and cannot be tested using postman.

    Detailed Test metrics:

    Below are the detailed test metrics by performing manual/automation testing. The project metrics are derived from Defect density, Test coverage, Test execution coverage, test tracking, and efficiency.

    The various metrics that assist in test tracking and efficiency are as follows:

    • Passed Test Cases Coverage: It measures the percentage of passed test cases. (Number of passed tests / Total number of tests executed) x 100

    • Failed Test Case Coverage: It measures the percentage of all failed test cases. (Number of failed tests / Total number of test cases executed) x 100

    Sonar Report:

    Repo Name

    Branch Name

    Release Version (POM)

    Coverage (>80%)

    Reliability (0)

    Security (0)

    Hotspots (0)

    Duplications (Less than 3%)

    eSigent

    release-1.6.x

    release-1.6.1

    86.2

    0

    0

    0

    0%


    Test Report

    Testing Scope

    The scope of testing is to verify fitment to the specification from the perspective of

    • Functionality

    • Deployability

    • Configurability

    • Customizability

    Verification is performed not only from the end user perspective but also from the System Integrator (SI) point of view. Hence, the Configurability and Extensibility of the software is also assessed. This ensures the readiness of software for use in multiple countries. Since MOSIP is an “API First” product platform, Verification scope required comprehensive automation testing for all the MOSIP APIs. An automation Test Rig is created for the same.

    Test Approach

    Persona based approach has been adopted to perform the IV&V, by simulating test scenarios that resemble a real-time implementation.

    A Persona is a fictional character/user profile created to represent a user type that might use a product/or a service in a similar way. Persona based testing is a software testing technique that puts software testers in the customer's shoes, assesses their needs from the software and thereby determines use cases/scenarios that the customers will execute. The persona needs may be addressed through any of the following.

    • Functionality

    • Deployability

    • Configurability

    • Customizability

    The verification methods may differ based on how the need was addressed.

    For regression check, “MOSIP Test Rig” - an automation testing suite - which is indigenously designed and developed for supporting persona-based testing. MOSIP Test Rig covers the end-to-end test execution and reporting. The end-to-end functional test scenarios are written starting from pre-registration to creation of packet in registration center, processing the packet through the registration processor, generating UIN and authenticating identity using IDA through various permutation and combinations of cases being covered. MOSIP Test Rig will be an open-source artifact which can also be enhanced and used by countries to validate the SI deliveries before going live. Persona classes include both negative and positive personas. Negative persona classes include users like Bribed Registration Office, Malicious Insider etc. The needs of positive persona classes must be met, whereas the needs of negative persona classes must be effectively restricted by the software.

    Verified configuration

    Verification is performed on various configurations as mentioned below

    Default configuration -

    • eSignet with 7 languages (English/Khmer/Hindi/Kannada/Tamil/Arabic/French)

    • Signup with 2 languages (Khmer/English)

    Main feature tested:

    • Signup Portal with mock ID

    • Login with Password with mock ID

    • Forgot Password with mock ID

    • Login with OTP with mock ID

    Feature Health

    Test execution statistics

    Functional test results

    Below are the test metrics by performing functional testing using mock MDS, mock Auth and mock ABIS. The process followed was black box testing which based its test cases on the specifications of the software component under test. The functional tests were performed in combination of individual module testing as well as integration testing. Test data were prepared in line with the user stories. Expected results were monitored by examining the user interface. The coverage includes GUI testing, System testing, End-To-End flows across multiple languages and configurations. The testing cycle included simulation of multiple identity schema and respective UI schema configurations.

    Total
    Passed
    Failed
    Skipped

    Test Rate: 98% with Pass rate: 98%

    Note: In API-based testing, 35 test cases were marked as skipped because they were not automated and cannot be executed using Postman.

    Here is the detailed breakdown:

    Test cases
    Total

    API Testrig results for eSignet and Signup with Mock ID:

    Test cases
    Total

    Note: 525 test cases related to the MOSIP ID plug-in are currently being ignored.

    API Testrig results for eSignet and Signup with MOSIP - CRE:

    Test cases
    Total

    Note:

    • In the mosipid-cre environment, 186 test cases are being skipped as L2 flow test cases are out of scope.

    • There is 1 failure in the registration status endpoint; the other 52 failures are related to L2 test cases and can be ignored.

    API Testrig results for eSignet and Signup with MOSIP – qa-base:

    Test cases
    Total

    Note: 186 test cases related to the mock plug-in are currently being ignored.

    API Testrig results for eSignet and Signup with Sunbird:

    Test cases
    Total

    Detailed Test metrics:

    Below are the detailed test metrics by performing manual/automation testing. The project metrics are derived from Defect density, Test coverage, Test execution coverage, test tracking, and efficiency.

    The various metrics that assist in test tracking and efficiency are as follows:

    • Passed Test Cases Coverage: It measures the percentage of passed test cases. (Number of passed tests / Total number of tests executed) x 100

    • Failed Test Case Coverage: It measures the percentage of all failed test cases. (Number of failed tests / Total number of test cases executed) x 100

    Sonar Report:

    Repo Name
    Branch Name
    Release Version (POM)
    Coverage (>80%)
    Reliability (0)
    Security (0)
    Hotspots (0)
    Duplications (Less than 3%)

    Refer to the github link for more on reports .

    Roadmap 2025

    This roadmap outlines the planned features, progress, and release details for eSignet throughout the calendar year 2025.

    Here we present the product roadmap for eSignet for the calendar year 2025. Annual product cycle of eSignet commences in January and concludes in December.

    Prioritization: Through this roadmap the startegic or adaptive prioritization, if there is, has been indicated as below:

    • Add [ ➕ ]: Added new.

    • Strategic priortization [ ↑ ] : Brought ahead in schedule.

    • Adaptive reschedule [ ↓ ]: Is moved to approaching quarters.

    Vision
    • Q1 2025: Starting the year with major fixes, along with enhancements to IDA kyc-auth and kyc auth-exchange API’s.

    • Q2 2025: Introducing prefix postfix support for multiple login handles, customizable eSignet UI, and enhancing client management endpoint.

    Quarter 🗓️
    Features 🛠️
    Details📝
    Status 📊
    Release 📌
    Note 📖

    UI Based Testing

    1166

    Passed

    1148

    Failed

    18

    Skipped

    0

    Ignored

    918

    API Based Testrig - eSignet-signup

    585

    Passed

    559

    Failed

    0

    Skipped

    0

    Ignored

    26

    Ignored

    169

    API Based Testrig - eSignet-signup

    585

    Passed

    301

    Failed

    1

    Skipped

    0

    Ignored

    283

    eSignet Signup

    release-1.2.x

    release-1.2.1

    79.3

    0

    0

    0

    0%

    esignet-mock-services

    release-0.11.x

    release-0.11.1

    83.3

    0

    0

    0

    0%

    esignet-plugins(mock-plugin)

    release-1.3.x

    release-1.3.2

    83.0

    0

    0

    0

    2.9%

    esignet-plugins(mosip-identity-plugin)

    release-1.3.2

    release-1.3.2

    83.6

    0

    0

    0

    0%

    esignet-plugins(sunbird-rc-plugin)

    release-1.3.2

    release-1.3.2

    83

    0

    0

    0

    0%

    Login with biometrics with mock ID
  • Login with KBI with mock ID

  • Identity verification process (L2 flow) with mock ID

  • Identity verification process (L2 flow) with MOSIP ID

  • Signup Portal with MOSIP IDA

  • Login with Password with MOSIP IDA

  • Forgot Password with MOSIP IDA

  • Login with OTP with MOSIP IDA

  • Login with biometrics MOSIP IDA

  • Sunbird Plugin with MOSIP IDA

  • Critical and Blocker Bugs verification

  • Docker Compose testing for esignet, esignet-signup, esignet-mock-services (windows)

  • UI Based Testing

    1166

    Passed

    1148

    Failed

    18

    Skipped

    0

    Ignored

    495

    Known issues

    2

    API Based Testrig - eSignet-signup

    661

    Passed

    626

    Failed

    0

    Skipped

    0

    Ignored

    30

    Known issues

    5

    Ignored

    169

    Known issues

    4

    API Based Testrig - eSignet-signup

    Total

    661

    Passed

    400

    Failed

    53

    Skipped

    186

    Ignored

    17

    Known issues

    5

    Additionally, 186 test cases are being ignored due to the esignet sunbird report being executed separately.

    Ignored

    169

    Known issues

    4

    API Based Testrig - eSignet-signup

    661

    Passed

    643

    Failed

    0

    Skipped

    0

    Ignored

    17

    Known issues

    1

    Skipped

    0

    Ignored

    918

    eSignet Signup

    release-1.2.x

    release-1.2.x

    82.1

    0

    0

    0

    0%

    esignet-mock-services

    release-0.11.x

    Release-0.11.x

    81.4

    0

    0

    0

    0%

    esignet-plugins(mock-plugin)

    release-1.3.x

    release-1.3.x

    83

    0

    0

    0

    2.9%

    esignet-plugins(mosip-identity-plugin)

    release-1.3.x

    release-1.3.x

    68.9

    0

    0

    0

    0%

    esignet-plugins(sunbird-rc-plugin)

    release-1.3.x

    release-1.3.x

    83

    0

    0

    0

    0%

    3183

    3113

    35

    35

    API Based Testing - eSignet

    2017

    Passed

    1965

    Failed

    17

    Skipped

    35

    API Based Testrig - eSignet

    1011

    Passed

    514

    Failed

    0

    Skipped

    0

    API Based Testrig - eSignet

    1011

    Passed

    838

    Failed

    0

    Skipped

    0

    API Based Testrig - eSignet

    1011

    Passed

    848

    Failed

    0

    Skipped

    0

    API Based Testrig - Sunbird

    1011

    Passed

    93

    Failed

    0

    eSigent

    release-1.6.x

    release-1.6.x

    86

    0

    0

    0

    here

    0%

    Q3 2025: Adding FAPI 2.0 security compliance and SSO feature along with dynamic sign-up form. These upgrades enhance security, improve interoperability, and offer more flexibility in user onboarding.

    Q4 2025: Java platform migration from Java 11 to Java 21, and advanced consent management features including support for obtaining consent from external parties, and consent handling for child and deceased users.

    2025 and Beyond: Focus on implementing identity brokering for seamless integration with external identity providers, ensuring secure user authentication. Transforming eSignet into an advanced eKYC verifier by leveraging plugins for ID verification with OIDC providers through web or mobile wallets, helping businesses comply with regulatory standards, and improving onboarding.

    .

    Q2

    Resource calculator for eSignet service with Mock IDA

    🟢 Completed

    Q2

    Add support for prefix and postfix customization for multiple handles in the eSignet UI

    🟢 Completed

    Q2

    Client management endpoint enhancement

    🟢 Completed

    Q2

    Configurable consent screen

    Added as part of client management endpoint enhancement

    🟢 Completed

    Q2

    eSignet UI Dynamic Page Title

    🟢 Completed

    Q3 ↑

    eKYC verification support in eSignet with MOSIP IDA

    and API enhancement in Authenticator Plugin

    🟢 Completed

    1.6.2

    Moved from:

    Q2 to Q3

    Q4

    Performance fixes for eSignet service with MOSIP ID

    🟠 In-progress

    1.7.0

    Q4 ↓

    Dynamic sign up UI

    🟠 In-progress

    1.7.0

    Moved from:

    Q3 to Q4

    Q4 ↓

    KBI form update: -

    1. Configuring labels

    2. Multiple input type support

    3. Multi lingual support

    🟠 In-progress

    1.7.0

    Moved from:

    Q3 to Q4

    Q4 ➕

    FAPI 2.0 Security Profile Compliance

    Adding support in eSignet for:

    🟠 In-progress

    1.7.0

    Added New to roadmap

    Q4

    Resource calculator eSignet with MOSIP ID

    🔵 Planned

    1.7.0

    Q4 ➕

    Face auth with eSignet

    🔵 Planned

    1.7.0

    Q4 ➕

    eSignet Conformance Fixes

    Fixes for the making eSignet adhere to Open ID standards & FAPI specification.

    🔵 Planned

    1.7.0

    Q4

    Java 21 Migration

      1. Plugins

    🔵 Planned

    1.8.0/2.0.0

    Q3- Q4

    2026↓

    SSO Super App Support

    🔵 Planned

    1.8.0

    2026➕

    Support OpenG2P to fetch user accounts from SPAR.

    1. Support for "resource" parameter in the authorization request

    2. Support for token exchange to give out PSUT to different clients

    🔵 Planned

    1.8.0

    Added New to roadmap

    2026

    Consent Handling in eSignet for Child and Deceased

    🔵 Planned

    1.8.0

    2026

    Getting consent from an external party

    🔵 Planned

    1.8.0

    2026

    Performance benchmarking of sign up with MOSIP ID repo using Mock ekyc verifier

    🔵 Planned

    1.8.0

    2026

    Support for multiple identity plugins

    🔵 Planned

    2026

    Identity Brokering / Federation Identity

    🔵 Planned

    2026

    Support for multi-factor authentication (MFA)

    🔵 Planned

    2026

    Access token/session management

    🔵 Planned

    2026

    eSignet as ekYC verifier

    1. OIDC Provider verification

      1. Wallet based verification - Web wallet/phone wallet

    2. OIDC Provider based seeding

    🔵 Planned

    2026

    Support for digital signatures using eSignet

    🔵 Planned

    2026

    CIBA Support

    🔵 Planned

    2026

    Adding Passkey support for authentication

    🔵 Planned

    2026

    Support the expired claims identification and initiate eKYC

    🔵 Planned

    2026

    QR code Standardization

    🔵 Planned

    2026

    eSignet Sign up - Timeout management in eKYC flow

    🔵 Planned

    Q1

    Critical bug fixes for 1.5.0

    Bug fixes

    🟢 Completed

    1.5.1

    Q2

    Performance fixes for the eSignet service using Mock IDA

    Performance enhancement

    🟢 Completed

    Logo
    Logo
    Wallet based seeding - Web wallet/phone wallet
    1.6.1
    Hardware and software resource calculator for eSignet Module
    1.6.1
    Added support for users to log in with their preferred login ID
    1.6.1
    Enhancement of the existing client management endpoint gives more flexibility to the replying part to customize eSignet as needed
    1.6.1
    1.6.1
    RP can configure the eSignet UI to have the desired page title & subtitle as per requirement.
    1.6.1
    KYC-auth
    KYC-exchange
    Performance enhancement
    Dynamic sign up UI based on a predefined UI schema
    Enhancing the KBI form in eSignet UI to support multiple input type
    PAR
    Sender Constraint Token using Dpop
    Authorization Server Issuer Identification
    Software and hardware required for eSignet module
    Support for face auth in eSignet using device camera
    Mock Identity Service
    Sign up
    eSignet Service
    Single Sign on support in eSignet for smooth integration with super apps
    Support OpenG2P to fetch user accounts from SPAR.
    Support to Identify who is registering with RP and how to handle the auth for child and deceased
    Flexibility to seek consent from external party, if consent is disabled
    eSignet performance benchmarking for eKYC based sign up flow
    Support for multiple identity plugins in the eSignet module
    Securely link a user's electronic identity across multiple identity management systems
    Enable multi-factor authentication (MFA) for enhanced security
    Manage sessions to ensure secure and efficient user authentication
    To be implemented with a federated identity feature
    Enable eSignet securely sign documents electronically
    Logo
    Logo

    Test Report

    Testing Scope

    The scope of testing is to verify fitment to the specification from the perspective of

    • Functionality

    • Deployability

    • Configurability

    • Customizability

    Verification is performed not only from the end user perspective but also from the System Integrator (SI) point of view. Hence, the Configurability and Extensibility of the software is also assessed. This ensures the readiness of software for use in multiple countries. Since MOSIP is an “API First” product platform, Verification scope required comprehensive automation testing for all the MOSIP APIs. An automation Test Rig is created for the same.

    Test Approach

    Persona based approach has been adopted to perform the IV&V, by simulating test scenarios that resemble a real-time implementation.

    A Persona is a fictional character/user profile created to represent a user type that might use a product/or a service in a similar way. Persona based testing is a software testing technique that puts software testers in the customer's shoes, assesses their needs from the software and thereby determines use cases/scenarios that the customers will execute. The persona needs may be addressed through any of the following.

    • Functionality

    • Deployability

    • Configurability

    • Customizability

    The verification methods may differ based on how the need was addressed.

    For regression check, “MOSIP Test Rig” - an automation testing suite - which is indigenously designed and developed for supporting persona-based testing. MOSIP Test Rig covers the end-to-end test execution and reporting. The end-to-end functional test scenarios are written starting from pre-registration to creation of packet in registration center, processing the packet through the registration processor, generating UIN and authenticating identity using IDA through various permutation and combinations of cases being covered. MOSIP Test Rig will be an open-source artifact which can also be enhanced and used by countries to validate the SI deliveries before going live. Persona classes include both negative and positive personas. Negative persona classes include users like Bribed Registration Office, Malicious Insider etc. The needs of positive persona classes must be met, whereas the needs of negative persona classes must be effectively restricted by the software.

    Verified configuration

    Verification is performed on various configurations as mentioned below

    Default configuration -

    • eSignet with 6 languages (English/Khmer/Hindi/Kannada/arabic/tamil)

    • Signup with 2 languages (Khmer/English)

    Main feature tested

    • Signup Portal with mock ID

    • Login with Password with mock ID

    • Forgot Password with mock ID

    • Login with OTP and biometrics with mock ID

    Features not in scope

    • Deployment testing on MOSIPID and Sunbird

    • UI Automation for Signup

    Feature Health

    Test execution statistics

    Functional test results

    Below are the test metrics by performing functional testing using mock MDS, mock Auth and mock ABIS. The process followed was black box testing which based its test cases on the specifications of the software component under test. The functional tests were performed in combination of individual module testing as well as integration testing. Test data were prepared in line with the user stories. Expected results were monitored by examining the user interface. The coverage includes GUI testing, System testing, End-To-End flows across multiple languages and configurations. The testing cycle included simulation of multiple identity schema and respective UI schema configurations.

    Total
    Passed
    Failed
    Skipped

    Note: In API-based testing, 35 test cases were marked as skipped because they were not automated and cannot be executed using Postman.

    Here is the detailed breakdown:

    Test cases

    API Testrig results for eSignet and Signup with Mock ID:

    Test cases

    Note: 544 test cases in esignet and 30 test cases in signup related to the MOSIP ID plug-in are currently being ignored.

    API Testrig results for eSignet and Signup with MOSIP - CRE:

    Test cases

    Note: 61 Failures in esignet and signup 198 are skipped due to L2 flow is not supported in esignet and signup.

    API Testrig results for eSignet and Signup with MOSIP – qa-base:

    Test cases

    Note: 166 test cases in esignet and 17 test cases in signup related to the mock plug-in are currently being ignored.

    API Testrig results for eSignet and Signup with Sunbird:

    Test cases

    Note: mock and mosipid plugin test cases are getting ignored

    Detailed Test metrics:

    Below are the detailed test metrics by performing manual/automation testing. The project metrics are derived from Defect density, Test coverage, Test execution coverage, test tracking, and efficiency.

    The various metrics that assist in test tracking and efficiency are as follows:

    • Passed Test Cases Coverage: It measures the percentage of passed test cases. (Number of passed tests / Total number of tests executed) x 100

    • Failed Test Case Coverage: It measures the percentage of all failed test cases. (Number of failed tests / Total number of test cases executed) x 100

    Sonar Report:

    Refer to the github link for more on reports .

    Login with KBI with mock ID
  • Identity verification process (L2 flow) with mock ID and MOSIP ID

  • Identity verification process (L1 flow) with Cre

  • Wallet login performed cre for release environment

  • Signup Portal with MOSIP IDA

  • Login with Password with MOSIP IDA

  • Forgot Password with MOSIP IDA

  • Login with OTP and biometrics MOSIP IDA

  • Sunbird Plugin with KBI login

  • DPoP and PAR in all plugins

  • Docker Compose testing for esignet, esignet-signup, esignet-mock-services (windows,linux,MAC)

  • Deployment testing on mock plugin (esignet,signup and FAPI 2.0)

  • Skipped

    35

    UI Based Testing

    Total

    1251

    Passed

    1228

    Failed

    23

    Skipped

    0

    Skipped

    0

    Ignored

    544

    Known issues

    0

    API Based Testrig - eSignet-signup

    Total

    665

    Passed

    635

    Failed

    0

    Skipped

    0

    Ignored

    30

    Known issues

    0

    Ignored

    166

    Known issues

    0

    API Based Testrig - eSignet-signup

    Total

    665

    Passed

    405

    Failed

    53

    Skipped

    190

    Ignored

    17

    Known issues

    0

    Ignored

    166

    Known issues

    0

    API Based Testrig - eSignet-signup

    Total

    665

    Passed

    648

    Failed

    0

    Skipped

    0

    Ignored

    17

    Known issues

    0

    Ignored

    1180

    Known issues

    0

    release-1.3.x

    release-1.3.0

    81.9

    0

    0

    0

    0%

    esignet-mock-services

    release-0.12.x

    release-0.12.0

    85.2

    0

    0

    0

    0%

    esignet-plugins(mock-plugin)

    release-1.3.x

    release-1.3.4

    83

    0

    0

    0

    2.9%

    esignet-plugins(mosip-identity-plugin)

    release-1.3.x

    release-1.3.4

    69.1

    0

    0

    0

    0%

    esignet-plugins(sunbird-rc-plugin)

    release-1.3.x

    release-1.3.4

    83

    0

    0

    0

    0%

    3443

    3357

    51

    35

    Test Rate: 98% with Pass rate: 98%

    API Based Testing - eSignet

    Total

    2192

    Passed

    2129

    Failed

    28

    API Based Testrig - eSignet

    Total

    1273

    Passed

    729

    Failed

    0

    API Based Testrig - eSignet

    Total

    1273

    Passed

    1091

    Failed

    8

    Skipped

    8

    API Based Testrig - eSignet

    Total

    1273

    Passed

    1107

    Failed

    0

    Skipped

    0

    API Based Testrig - Sunbird

    Total

    1273

    Passed

    93

    Failed

    0

    Skipped

    0

    Repo Name

    Branch Name

    Release Version (POM)

    Coverage (>80%)

    Reliability (0)

    Security (0)

    Hotspots (0)

    Duplications (Less than 3%)

    eSigent

    release-1.7.x

    release-1.7.0

    84.7

    0

    0

    0

    0%

    here

    eSignet Signup

    Deployment Guide

    Overview

    This deployment guide provides a comprehensive, step-by-step approach to deploying and configuring eSignet on a Kubernetes based infrastructure and environment. The guide expects you to have the necessary Kubernetes infrastructure in place and required tools to integrate eSignet with various identity systems (MOSIP, Sunbird RC or Custom).

    Deployment Architecture of eSignet

    The diagram below illustrates the deployment architecture of the eSignet, highlighting secure user access via VPN, traffic routing through firewalls and load balancers, and service orchestration within a Kubernetes cluster.

    • Key Components: eSignet Service, OIDC UI, databases, and secure cryptographic operations via HSM.

    • Deployment: Managed with Rancher, Helm charts, and a private Git repository.

    • Monitoring: Ensured using Grafana and Prometheus for observability.

    How is this guide structured and organized?

    1. : Provides an overview of the eSignet stack + ID System, deployment scenarios, required skill sets and system architecture.

    2. : Outlines infrastructure details, hardware/software/network requirements, and initial setup steps.

    3. : Describes running install-prereq.sh script, which interactively installs required dependencies such as PostgreSQL, Keycloak, Redis, HSM (or key management), Kafka, API access control, and captcha validation service. The script prompts you to confirm or skip each component based on your environment, allowing you to reuse existing infrastructure or install new services as needed.

    Each section provides direct steps and references to external resources for a streamlined deployment experience.

    eSignet Deployment and Integration Scenarios

    There are different use cases for eSignet and therefore eSignet can be deployed around various scenarios. Few such examples can include enabling secure digital signatures for online transactions, integrating with national ID systems for authentication, supporting e-Government services, onboarding users for financial or healthcare applications, or providing identity verification for educational platforms.

    However here within the scope of this deployment guide we will focus on how eSignet can be deployed and integrated with various identity systems. The deployment flow and integration steps may differ based on your existing setup. Below are the typical scenarios and recommended approaches.

    Note: The scenario part is discussed here and here you are asked to choose the plugin you want to use for identity management.

    How eSignet can work with different Id systems:

    • eSignet + Mock: Mock ID (New) + eSignet (New):

      This scenario deploys eSignet with a mock identity provider, allowing you to simulate authentication and authorization flows without integrating with a real ID system. It is ideal for development, testing, and demonstrations, requiring no external dependencies or onboarding steps.

    • eSignet + MOSIP: MOSIP (Exists) + eSignet (New)

      eSignet + MOSIP refers to integrating eSignet with the MOSIP identity system. In this scenario, eSignet leverages MOSIP as the identity provider, enabling secure authentication and digital signature workflows based on MOSIP-managed identities. This setup is suitable for environments where MOSIP is already deployed or planned, ensuring seamless identity verification and trust.

    Prerequisites

    The prerequisite section is segregated into two parts:

    • Developer Workstation Profile: This section lists the tools and utilities you need to have installed on your personal computer to create/manage the k8's cluster and deploy eSignet on it.

    • Developer Environment Setup: This section lists the specific configurations and settings required for your development environment to work effectively with eSignet.

    • Cloud Environment Profile: This section lists the hardware/software/network requirements for the Kubernetes based server infrastructure where you will deploy eSignet.

    Developer Workstation Profile

    The Developer Workstation Profile lists the common tools and utilities which you will need to have installed on your personal computer to be able to create/manage the k8's cluster and deploy eSignet on it.

    Operating Systems

    The eSignet can be deployed with a PC having one of the following operating systems, however for this guide we have considered a linux machine with Ubuntu 22.04 LTS.

    • Linux (Ubuntu 22.04 LTS - recommended for production deployments)

    • Windows

    • macOS (OSX)

    Development Environment Setup

    You should have these tools installed on your local machine from which you will be running the kubectl, connect to the k8s cluster and manage the deployment.

    • - version > 2.12.4

    • Command line utilities:

      • - version 2.12.4 or higher

      • - any client version above 3.0.0 and add below repos as well

    • : version:

    • : version: 1.15.0

    • Wireguard Client - Refer to the section for the instructions.

    Cloud Environment Profile

    Server Requirements Prerequisites: Kubernetes based server infrastructure is required to deploy eSignet. It can either have the Identity System (like MOSIP) already deployed on it or you can deploy eSignet along with the ID system.

    Deploy eSignet

    The sub sections broadly outline the deployment process for eSignet which considers deploying it with or without Identity system (like MOSIP).

    Deployment will broadly start and proceed as follows: The deployment process includes the following key steps:

    • Validate Existing ID System: Ensure that your current identity system (such as MOSIP or Sunbird RC) is operational and healthy before proceeding with eSignet deployment.

    • Set Up Namespaces and Configurations: Create and configure the necessary Kubernetes namespaces (e.g., esignet, mosip) and prepare configuration files required for eSignet.

    • Install and Initialize Prerequisites: Deploy and initialize all required dependencies, such as PostgreSQL, Keycloak, Redis, HSM/key management, Kafka, and API access control, using the provided installation scripts.

    Follow the subsections below for detailed instructions

    Get access to the 'Deployment Environment' (Kubernetes Cluster and Namespaces) where you will deploy eSignet

    Ask your System Administrator of the 'Deployment Environment' to provide you access. This typically involves:

    • Access to the Kubernetes cluster (kubeconfig file).

    • Access to the relevant namespaces (e.g., mosip, esignet).

    • Ensure you have the necessary permissions to create resources in these namespaces.

    Request DevOps team for below items

    • Kubeconfig file for the cluster (This will also contain namespace permissions).

    • Confirm MOSIP is running and healthy

    • Set up kubectl access

    Note: Above mentioned environment variables will be used throughout the installation to move between one directory to other to run install scripts.

    Verify existing 'ID System' next to which you will deploy eSignet

    In case you are deploying eSignet with an ID System (like MOSIP), you should first validate that the existing ID System is healthy and operational, after which you can deploy.

    We have considered MOSIP for an example and scope of this document.

    Clone eSignet Repository

    This allows you to access the deployment scripts and configuration files required for installing eSignet.

    Note: Before cloning the repository, you should first ensure your kubectl is configured to access the target Kubernetes cluster and that you have the necessary permissions for the relevant namespaces. Once connectivity is verified, you should run the provided deployment scripts (such as install-prereq.sh, initialise-prereq.sh, and install-esignet.sh) from your local machine.

    Deploy eSignet services

    Once steps mentioned above are complete and you have verified access, proceed with the deployment scripts as explained below.

    Install Prerequisites

    The prerequisites that you install ensures that the environment is ready for deploying eSignet core services and plugins.

    Note: What if I already have some of these dependencies (prerequisites) installed? If you already have dependencies like Postgres or Keycloak installed as part of your existing ID System (e.g. MOSIP) setup, you can skip the particular component and the respective prompt and jump to the next prompt to proceed on with the running script.

    When running the install scripts, you are prompted to make selections for various components and configurations. This section of the guide outlines the prompts you can expect, along with guidance on when to answer 'y' (yes) or 'n' (no) based on your environment.

    Some prompts are chained — your response to one may trigger additional questions. Review the following section to familiarize yourself with the installation flow and prepare your answers in advance for a smoother deployment experience.

    What all gets installed with 'Prerequisites Installation'?**

    This sets up dependencies like Postgres, Keycloak, Redis, and other required services. The following components are installed as prerequisites for eSignet deployment:

    • PostgreSQL: Database backend for eSignet services.

    • Keycloak: Identity and access management service.

    • Redis: In-memory data store for caching and session management.

    • HSM (Hardware Security Module) or Software-based Key Management: For secure key storage and cryptographic operations.

    Before you run the install-prereq.sh script what basic steps you need to do?

    Before running the install-prereq.sh script, you need to prepare the esignet-global configmap, which contains environment-specific configuration for eSignet.

    1. Copy the sample configmap file:

    1. Edit esignet-global-cm.yaml:

    • Update domain names and other configuration values to match your deployment environment.

    • Set up Google reCAPTCHA v2 by generating site and secret keys for your domain at and updating the configmap accordingly.

    • If using an external IAM, copy the required secrets and create a Kubernetes secret named keycloak-client-secrets in the esignet namespace.

    Note:

    1. The esignet-global-cm.yaml file typically contains domain names, API endpoints, and other parameters required for eSignet to function in your environment.

    2. eSignet namespace is also created if it does not exist already.

    Once the configmap is updated, proceed with the prerequisite installation.

    Run the ./install-prereq.sh script

    Run the ./install-prereq.sh script (from deploy folder) to install required services such as PostgreSQL, Keycloak, Redis, HSM (or key management), Kafka, and API access control. You will be prompted for configuration details based on your environment (e.g., whether to install or skip certain components).

    HSM

    Do you want to deploy hsm for esignet service? Please opt for 'n' if you already have hsm installed: (s - for softhsm, e - external, p - for pkcs12 based key management from mounted file)"

    Prompts:

    1. n - If you already have hsm installed

    2. s - If you want to install softhsm

    3. p - If you want to use pkcs12 based key management from mounted file

    4. e - If you want to connect to external hsm 1. n - If you don't have external hsm setup 2. y - If you have external hsm setup

    apiaccesscontrol

    Do you want to access control the esignet client management APIs? Please opt for 'n' if not required. Press enter for default y"

    Prompts:

    1. n - "Warning! You have chosen to skip the keycloak initialization. The internal APIs of eSignet will run without access control."

    2. y - "You have chosen to initialize keycloak for access control of internal APIs of eSignet." 1. ["iamserverurl"] = "Please provide the IAM server URL: Press enter to install default keycloak for access control"

    Kafka

    Do you want to deploy Kafka in the kafka namespace? Please opt for 'n' if you already have a kafka deployed: Press enter for default y"

    Prompts:

    1. n - If you already have kafka deployed 1. ["kafkaurl"] = "Please provide the kafka url: spring.kafka.bootstrap-servers"

    2. y - If you want to install kafka

    Postgres

    Do you want to deploy postgres in the postgres namespace? Please opt for 'n' if you already have a postgres server deployed: Press enter for default y"

    Prompts:

    1. y - If you want to install postgres

    2. n - If you already have a postgres server deployed

    3. ["postgreshostname"] = "Please provide the hostname for the postgres server:"

    4. ["postgresport"] = "Please provide the port number for the postgres server:"

    Redis

    Do you want to deploy redis in the redis namespace? Press enter for default y"

    Prompts:

    1. y - If you want to install redis

    2. n - If you already have a redis server deployed

    The installation begin as per user requirement based on the above set of questions/prompts. Once the installation is completed, you are asked to enter the details to complete the setup for captcha validation service.

    Captcha Validation Service

    Do you want to install captcha validation service? Press enter for default y

    • Warning message: "It is not recommended to use the eSignet without captcha site key and captcha secret key in production env. Press enter to proceed.

    Prompts:

    1. y - If you want to install captcha validation service

    Prerequisite installation is complete at this stage.

    Initialise Prerequisites

    Run the ./initialise-prereq.sh script (from deploy folder) to initialize required services such as the eSignet database and Keycloak. You will be prompted for configuration details based on your environment (e.g., database credentials, IAM scope, service endpoints). Update the relevant values files before executing the script to ensure correct initialization.

    You are prompted to answer following questions based on whether the eSignet database is present or not in the postgres server url provided above. Therefore, before you run the initialise script, update the Postgres and Keycloak values files as needed and then initialise.

    1. ["postgres"] = "eSignet database was not found. Running the db scripts to create and initialize the eSignet database:"

    2. Information to be added in the guide for the IAM scope in the deployment guide.

    3. In the deployment script, certificate endpoint, binding endpoint and client management endpoint are to be configured as internal.

    eSignet Services Installation

    Once you have completed the pre-requisite installation and initialization, you can proceed to install the eSignet services.

    Before you run the installation script (Decision on Plugin to install)

    Before you run the installation script, you should decide which plugin you want to install, In the context of this guide this typically means which ID System you want to integrate with. Based on your decision, you should navigate to the respective folder and run the installation script.

    1. eSignet Mock Plugin – Simulates an identity provider for testing and development; no real ID system integration required.

    2. MOSIP Identity Plugin – Integrates eSignet with an existing MOSIP identity system.

    3. Sunbird RC Plugin – Connects eSignet to an existing Sunbird RC identity registry.

    4. Custom Plugin – Enables integration with any custom identity system via API access control.

    Compatibility matrix

    Here below is a compatibility matrix for different Identity Systems, eSignet versions, and plugin versions. It helps you determine which versions are compatible with each other and guides you to the appropriate integration guide/documentation. Understanding this matrix is crucial for ensuring a stable and supported deployment, avoiding integration issues, and selecting the correct components for your environment.

    Identity System
    eSignet Version
    Plugin Version
    Status
    Integration Guide

    If you want to install eSignet with plugins, you should navigate to the folder 'esignet-with-plugins' and run below command:

    You are prompted with following question/prompts to choose from the list of available plugins and install eSignet with only chosen plugin.

    1. esignetplugin = Choose the required plugin to proceed with installation.

    2. esignet-mock-plugin

    3. mosip-identity-plugin

    4. sunbird-rc-plugin

    The answer to the above questions is in option number - for example '1', '2', '3' or '4'.

    esignet-mock-plugin

    If you choose 'esignet-mock-plugin', you are not prompted with any further chained questions/prompts and the installation for mock plugin is completed automatically.

    When you choose the esignet-mock-plugin during installation, the deployment script installs eSignet with a mock identity provider integration. This setup is primarily for testing and demonstration purposes, allowing you to simulate authentication and authorization flows without connecting to a real identity system.

    Key points:

    • No additional prompts are shown; the installation proceeds automatically.

    • The mock plugin provides sample endpoints and data to mimic real-world identity operations.

    • You can use the mock relying party and OIDC UI to test the complete eSignet flow.

    • No onboarding with MOSIP or Sunbird RC is required in this scenario.

    After installation, you can proceed to test eSignet using the provided mock relying party tools and Postman collections.

    mosip-identity-plugin

    If you choose esignet-with-mosip-id plugin, you are prompted with the questions below along with default url mentioned:

    1. ["mosip.esignet.authenticator.ida.cert-url"] = "Default url: (http://mosip-file-server.mosip-file-server/mosip-certs/ida-partner.cer) Provide custom value (if applicable) to override the default url: "

    2. ["mosip.esignet.authenticator.ida.kyc-auth-url"] = "Default url: (http://ida-auth.ida/idauthentication/v1/kyc-auth/delegated/${mosip.esignet.authenticator.ida.misp-license-key}/) Provide custom url (if applicable) to override the default url: "

    3. ["mosip.esignet.authenticator.ida.kyc-exchange-url"] = "Default url: (http://ida-auth.ida/idauthentication/v1/kyc-exchange/delegated/${mosip.esignet.authenticator.ida.misp-license-key}/) Provide custom url (if applicable) to override the default url: "

    sunbird-rc-plugin

    If you choose eSignet-with-sunbird plugin, you are prompted with the question below:

    1. mosip.esignet.sunbird-rc.registry-get-url = Please provide the url for sunbird registry get api:

    Once the above decision inputs are taken from you, eSignet installation should be initialized and completed successfully.

    If any error occurs during eSignet installation, You can start the eSignet installation again after deleting the existing chart or fix the issue.

    custom-plugin

    If you choose eSignet installation without plugin, below question is prompted:

    1. custompluginurl = Please provide the url for the custom plugin you want to use:

    Above url can be zip file or jar file, so both zip url and jar file url are supported for above variable.

    Once the above input are taken from you, eSignet installation is initialised and completed successfully.

    If any error occurs during eSignet installation, you are able to start the eSignet installation again after deleting the existing helm chart using delete.sh or debug the issue further.

    OIDC UI Installation

    Once eSignet installation is completed, now, you are prompted to provide relevant inputs for completing oidc ui deployment:

    1. esignetthemes = Please provide the theme for the eSignet UI. Please choose between 'blue' or 'orange' for esignet default theme: Press enter for the default theme. Please provide URL for the custom theme"

    2. defaultlang = Please choose the default lang for esignet. Please press enter for en

    3. idprovidername = Please provide the name for eSignet: (Note: This name will be used instead of eSignet on the login page and in other places)"

    Onboarding

    If you have chosen to install eSignet with mosip ID then the MISP onboarding should be initiated and completed successfully, however if you choose to continue with mock or custom plugin, no MISP onboarding is required, and this step should be skipped.

    Onboarding eSignet as MISP partner when using MOSIP ID plugin

    • Use the onboarder script to register eSignet as a MISP partner and configure the OIDC client.

    • Update any required properties (e.g., MOSIP IDA domain names, client secrets) as per your environment.

    Refer to the for property overrides.

    eSignet installation is completed at this step.

    Note: You can refer to the deployment guide to know more about the mock relying party portal installation, having mock relying party portal installed will be helpful to verify the complete eSignet flow.

    Onboarding relying parties

    Refer to the for detailed steps on how to onboard relying parties.

    Verify Deployment

    You can check the status of eSignet pods after deployment, use the following command:

    Documentation

    • Relying Party Onboarding

    Deploy eSignet Services: When you run the install script for eSignet services, it guides you through selecting the appropriate identity management plugin (e.g., MOSIP, Sunbird RC, or custom). Based on your choice, the script deploys eSignet services configured to integrate seamlessly with your selected identity system. This section provides detailed instructions for each integration scenario, ensuring a smooth deployment process.

  • Contribution and Community: Highlights how you can contribute code, share feedback, or reach out for support while working with the application.

  • eSignet + Identity System (Non-MOSIP): Non-MOSIP ID (Exists) + eSignet

    This scenario involves integrating eSignet with an existing non-MOSIP identity system. It allows organizations to leverage their current identity management solutions while incorporating eSignet's digital signature capabilities. This approach is ideal for environments where a different identity provider is already in place, ensuring compatibility and streamlined user experiences.

  • eSignet + Sunbird RC

    • Sunbird RC (Exists) + eSignet (New)

    This scenario focuses on integrating eSignet with the Sunbird RC identity system. It enables eSignet to utilize Sunbird RC for identity management, facilitating secure authentication and digital signature processes. This setup is particularly beneficial for organizations that have already implemented Sunbird RC, allowing them to enhance their identity verification and trust mechanisms with eSignet's features.

  • Deploy Core eSignet Services: Install the main eSignet services and select the appropriate identity management plugin (MOSIP, Sunbird RC, Mock, or Custom) as per your integration scenario.

  • Onboard eSignet as a MOSIP Partner: If integrating with MOSIP, onboard eSignet as a MISP partner and configure the OIDC client for secure authentication and authorization.

  • Verify Deployment: Check the status of deployed pods and services to confirm successful installation and operation.

  • Optional Components: For comprehensive testing and integration, optionally deploy the OIDC UI and mock relying party components to simulate end-to-end flows.

  • Access to any required secrets or configuration files.

    apiaccesscontrol: Service for API access management and authorization.

  • ConfigMaps and Secrets: For storing configuration values, domain details, and sensitive credentials (e.g., esignet-global configmap, keycloak-client-secrets).

  • Supporting scripts: Shell scripts for installation and initialization (install-prereq.sh, initialise-prereq.sh).

  • ["externalhsmclient"] = "Please provide the url where externalhsm client zip is located: "

  • ["externalhsmhosturl"] = "Please provide the hosturl for externalhsm: "

  • ["externalhsmpassword"] = "Please provide the password for the externalhsm: "

  • ["postgresusername"] = "Please provide the username for the postgres server:"

  • ["postgrespassword"] = "Please provide the password for the postgres server:"

  • Sunbird RC 2.x

    1.7.0

    1.0.x

    Stable

    Sunbird Integration

    Custom API

    1.7.0

    Custom

    Custom

    custom-plugin:"

    This setup is not recommended for production but is useful for development, testing, and API validation.

    ["mosip.esignet.authenticator.ida.send-otp-url"] = "Default url: (http://ida-otp.ida/idauthentication/v1/otp/${mosip.esignet.authenticator.ida.misp-license-key}/) Provide the custom url (if applicable) to override the default url: "
  • ["mosip.esignet.binder.ida.key-binding-url"] = "Default url: (http://ida-auth.ida/idauthentication/v1/identity-key-binding/delegated/${mosip.esignet.authenticator.ida.misp-license-key}/) Provide the custom url (if applicable) to override the default url: "

  • ["mosip.esignet.authenticator.ida.get-certificates-url"] = "Default url: (http://ida-internal.ida/idauthentication/v1/internal/getAllCertificates) Provide the custom url (if applicable) to override the default url: "

  • ["mosip.esignet.authenticator.ida.auth-token-url"] = "Default url: (http://authmanager.kernel/v1/authmanager/authenticate/clientidsecretkey) Provide the custom url (if applicable) to override the default url: "

  • ["mosip.esignet.authenticator.ida.audit-manager-url"] = "Default url: (http://auditmanager.kernel/v1/auditmanager/audits) Provide the custom url (if applicable) to override the default url: "

  • ["mosip.esignet.authenticator.ida.otp-channels"] = "Default channels (email,phone) Provide the required channels to override the default channels: "

  • MOSIP 1.2.x

    1.7.0

    1.3.x

    Stable

    MOSIP Integration

    MOSIP 1.1.x

    1.5.x

    1.2.x

    Legacy

    Legacy MOSIP

    Introduction
    Prerequisites
    Deploy eSignet Prerequisites
    Deploy eSignet Services
    Ansible
    kubectl
    helm
    rke
    1.3.10
    Istioctl
    Setup Wireguard Client on your PC
    Recaptcha Admin
    official onboarding documentation
    Relying Party Onboarding Guide
    Relying Party Onboarding
    Integration Options and Discovery Endpoints
    Development and Integration with eSignet

    eSignet 1.5.0 - On-Prem Installation Guide

    Overview

    This guide provides comprehensive instructions for deploying eSignet. eSignet operates as a collection of microservices hosted within Kubernetes clusters to ensure scalability, modularity, and high availability.

    This guide is applicable only for eSignet version 1.5.0 and above.

    • The deployment process includes the following key components and configurations:

      • Wireguard: is used as a trust network extension to access the admin, control, and observation pane along with on-field registration client connectivity to the backend server.

      • Nginx Server: eSignet uses the Nginx server for:

        • SSL termination

    • eSignet Pre-requisites:

      These are the services required to deploy multiple eSignet modules:

      • eSignet-prerequisites: Servicess required for esignet-service and oidc-ui deployment.

      • eSignet-mock-prerequisites: Servicess required for mock-relying-party

    • eSignet Services deployment:

      • esignet-service and oidc-ui deployment.

      • Onboarding MISP partner for eSignet service.

    Architecture

    The diagram below illustrates the deployment architecture of the eSignet, highlighting secure user access via VPN, traffic routing through firewalls and load balancers, and service orchestration within a Kubernetes cluster.

    • Key Components: eSignet Service, OIDC UI, databases, and secure cryptographic operations via HSM.

    • Deployment: Managed with Rancher, Helm charts, and a private Git repository.

    • Monitoring: Ensured using Grafana and Prometheus for observability.

    Deployment Repositories

    • : contains the scripts to install and configure Kubernetes cluster with required monitoring, logging, and alerting tools.

    • : Contains deployment scripts and source code for :

      • eSignet Pre-requisites services.

      • eSignet services.

    Pre-requisites

    Ensure all required hardware and software dependencies are prepared before proceeding with the installation.

    Hardware requirements

    • Virtual Machines (VMs) can use any operating system as per convenience.

    • For this installation guide, Ubuntu OS is referenced throughout.

    Sl no.
    Purpose
    vCPU's
    RAM
    Storage (HDD)
    No. of VM's
    HA

    Network Requirements

    • All the VMs should be able to communicate with each other.

    • Need stable intra-network connectivity between these VMs.

    • All the VMs should have stable internet connectivity for docker image download (in case of local setup ensure to have a locally accessible docker registry).

    • Server Interface requirements as mentioned in below table:

    Sl no.
    Purpose
    Network Interfaces

    DNS requirements

    Sl no.
    Domain Name
    Mapping details
    Purpose

    Certificate requirements

    As only secured https connections are allowed via nginx server will need below mentioned valid ssl certificates:

    1. Wildcard SSL Certificate for the Observation Cluster:

      • A valid wildcard SSL certificate for the domain used to access the Observation cluster.

      • This certificate must be stored inside the Nginx server VM for the Observation cluster.

      • For example, a domain like *.org.net could serve as the corresponding example.

    Tools to be installed on Personal Computers:

    Follow the steps mentioned to install the required tools on your personal computer to create and manage the k8 cluster using RKE1.

    Installation

    Below is a step-by-step guide to set up and configure the required components for secure and efficient operations.

    Wireguard

    Secure access solution that establishes private channels to Observation and eSignet clusters.

    Note: If you already have a Wireguard bastion host then you may skip this step.

    • A Wireguard bastion host (Wireguard server) provides a secure private channel to access the Observation and eSignet cluster.

    • The host restricts public access and enables access to only those clients who have their public key listed in the Wireguard server.

    • Wireguard listens on UDP port51820.

    Setup Wireguard Bastion server

    1. Create a Wireguard server VM with above mentioned Hardware and Network requirements.

    2. Open ports and Install docker on Wireguard VM.

    • create a copy of hosts.ini.sample as hosts.ini and update the required details for wireguard VM cp hosts.ini.sample hosts.ini

    • execute ports.yml to enable ports on the VM level using ufw: ansible-playbook -i hosts.ini ports.yaml

    Note:

    • Permission of the pem files to access nodes should have 400 permissions. sudo chmod 400 ~/.ssh/privkey.pem

    • These ports are only needed to be opened for sharing packets over UDP.

    1. execute docker.yml command to install docker and add the user to the docker group:

    1. Setup Wireguard server

      • SSH to wireguard VM

      • Create a directory for storing wireguard config files.

      • Install and start the wireguard server using docker as given below:

    Note:

    • Increase the no. of peers above in case more than 30 wireguard client confs (-e PEERS=30) are needed.

    • Change the directory to be mounted to wireguard docker as needed. All your wireguard confs will be generated in the mounted directory (-v /home/ubuntu/wireguard/config:/config).

    Setup Wireguard Client on your PC and follow the below steps:

    1. Install the on your PC.

    2. Assign wireguard.conf:

    • SSH to the wireguard server VM.

    • cd /home/ubuntu/wireguard/config

    • Assign one of the PR for yourself and use the same from the PC to connect to the server.

    • Create assigned.txt file to keep track of peer files allocated and update every time some peer is allocated to someone.

    1. Start the wireguard client and check the status:

    1. Once connected to wireguard, you should be now able to login using private IPs.

    Observation cluster setup and configuration

    Observation K8s Cluster setup:

    1. Install all the required tools mentioned in the prerequisites for the PC.

    • .

    • .

    • .

    • rke (version 1.3.10)

    1. Set up Observation Cluster node VMs as per the hardware and network requirements mentioned above.

      1. Set up passwordless SSH into the cluster nodes via PEM keys. (Ignore if VMs are accessible via PEMs).

        • Generate keys on your PC ssh-keygen -t rsa

    Note:

    • Make sure the permission for privkey.pem for ssh is set to 400.

    • Clone and move to the required directory as per the hyperlink.

    1. Set up the observation cluster by following the steps given .

    2. Once cluster setup is completed, setup k8's cluster ingress and storage class following .

    3. Once the Observation K8 cluster is created and configured set up the nginx server for the same using the .

    4. Once the Nginx server for observation place is done continue with the .

    • Install Keycloak.

    • Install Rancher UI.

    • keycloak & Rancher UI Integration.

    eSignet K8 Cluster setup:

    1. Set up on your personal computer.

    2. Clone the Kubernetes Infrastructure Repository:

    Note: Make sure to use the released tag. Specifically v1.2.0.2.

    1. Create a copy of hosts.ini.sample as hosts.ini. Update the IP addresses.

    2. Execute to open all the required ports.

    3. Install on all the required VMs.

    eSignet K8 Cluster Configuration:

    • Set up for persistence in the k8 cluster as well as a standalone VM (Nginx VM).

    • Setup for K8 cluster Monitoring.

    • Setup for the K8 cluster.

    • Setup and Kiali.

    Nginx for eSignet K8 Cluster:

    1. Set up for exposing services from the newly created eSignet K8 cluster.

    Install eSignet and pre-requisite services:

    1. Clone the eSignet repository: (select tag based upon the compatibility matrix)

    1. Install for eSignet from the deploy directory.

    Follow the pre-requisites deployment steps:

    1. for eSignet services.

    2. Install eSignet and OIDC .

    3. eSignet as per the plugin used for deployment.

    4. Setup for detailed automated testcase execution.

    Install eSignet mock services:

    1. Clone the respective repo: (select tag based upon the compatibility matrix)

    1. Install for eSignet mock services.

    2. Install services.

    3. Onboard services.

    Install eSignet signup and its pre-requisites services:

    1. Clone the respective repo: (select tag based upon the compatibility matrix)

    1. Install for eSignet Signup services.

    2. Install services.

    3. Deploy dependencies for eSignet signup onboarder following .

    4. eSignet signup services.

    helm repo add bitnami https://charts.bitnami.com/bitnami
    helm repo add mosip https://mosip.github.io/mosip-helm
    # Set KUBECONFIG environment variable
    export KUBECONFIG=/path/to/your/kubeconfig
    
    # OR copy to default location
    cp kubeconfig ~/.kube/config
    
    ```sh
    * Check cluster context
    
    # Confirm you are operating in the correct cluster context:
    kubectl config get-contexts
    kubectl config use-context <desired-context>
    
    # Test cluster connectivity
    kubectl get nodes
    
    # Check MOSIP deployment status
    kubectl get pods -n <namespace>
    kubectl get svc -n <namespace>
    
    # Verify key MOSIP services are running
    kubectl get pods -n mosip | grep -E "(ida|pms|kernel|postgres|keycloak|redis)"
    
    # Clone eSignet repository
    git clone https://github.com/mosip/esignet.git
    cd esignet/deploy
    cp esignet-global-cm.yaml.sample esignet-global-cm.yaml
    ./install-prereq.sh
    2.  ["adminuser"] = "Please provide admin user for initialisation"
    3.  ["adminpassword"] = "Please provide admin password for initialisation"
    1.  ["redishostname"] = "Please provide the hostname for the redis server:"
    2.  ["redisport"] = "Please provide the port number for the redis server:"
    
    3.  ["redispassword"] = "Please provide the password for the redis server: "
    1.  ["captchasitekey"] = "Please provide the captcha site key"
    2.  ["captchasecretkey"] = "Please provide the captcha secret key"
    2. If you are opting for 'n', the captcha service installation will be skipped.
    Please make sure to update the below property is blank in the env properties:
    mosip.esignet.captcha.required=
    ./initialise-prereq.sh
    ./install.sh
    kubectl get pods -n esignet
    Plugin Development

    Reverse Proxy

  • CDN/Cache management

  • Load balancing

  • Kubernetes (K8s) Cluster: Kubernetes (K8s) cluster creation, configuration and administration of same.

    • K8 cluster is created using the Rancher and rke tools.

    • K8 cluster essentially used in ref-impl architecture:

      • Observation K8 cluster

      • eSignet application K8 cluster

  • Cluster Configurations:

    • Ingress Setup: For exposing application services outside the K8s cluster.

    • Storage Class Setup: This is used to set up the storage class for persistence in the K8 cluster.

    • Logging System: Continuously scrapes logs from all pods as needed.

    • Monitoring System: Continuously monitors logs and generates graphs to better manage the application and cluster.

    • Alerting: Users are identified about crucial events as and when needed.

  • Observation K8 cluster contains:

    • Rancher Ui: application used to create and manage the k8 cluster. This is needed once for an organization as it can manage multiple dev, qa, and prod k8 clusters easily.

    • Kecloak: IAM tool used for defining RBAC policies for allowing access to Rancher.

  • eSignet cluster: This cluster hosts all eSignet components, along with certain third-party components, to ensure the cluster's security, APIs, and data.

  • and
    mock-relying-party-ui
    deployment.
  • eSignet-signup: Services required for esignet-signup-service and esignet-signup-ui deployment.

  • mock-relying-party-service
    and
    mock-relying-party-ui
    deployment.
  • Onboarding mock-relying-party.

  • esignet-signup-service and esignet-signup-ui deployment.

  • Onboarding MISP partner for esignet-signup-partner.

  • eSignet Onboarding.

  • eSignet Api-testrig.

  • esignet-mock-services : Contains deployment script and source code for :

    • eSignet mock pre-requisites services.

    • eSignet mock services.

    • eSignet mock services onboarding.

  • esignet-signup : Contains deployment script and source code for:

    • eSignet signup pre-requisites.

    • eSignet signup services.

    • eSignet signup onboarding pre-requisites.

    • eSignet signup onboarding.

  • 2

    8 GB

    32 GB

    2

    2

    3.

    Observation Nginx server (use Loadbalancer if required)

    2

    4 GB

    16 GB

    1

    Nginx+

    4.

    eSignet Cluster nodes

    8

    32 GB

    128 GB

    3

    Allocate etcd, control plane and worker accordingly

    5.

    eSignet Nginx server ( use Loadbalancer if required)

    2

    4 GB

    16 GB

    1

    Nginx+

    4.

    api-internal.sandbox.xyz.net

    Private IP of Nginx server for MOSIP cluster

    Internal API’s are exposed through this domain. They are accessible privately over wireguard channel

    5.

    api.sandbox.xyx.net

    Public IP of Nginx server for MOSIP cluster

    All the API’s that are publically usable are exposed using this domain.

    6.

    kibana.sandbox.xyx.net

    Private IP of Nginx server for MOSIP cluster

    Optional installation. Used to access kibana dashboard over wireguard.

    7.

    kafka.sandbox.xyz.net

    Private IP of Nginx server for MOSIP cluster

    Kafka UI is installed as part of the MOSIP’s default installation. We can access kafka UI over wireguard. Mostly used for administrative needs.

    8.

    iam.sandbox.xyz.net

    Private IP of Nginx server for MOSIP cluster

    MOSIP uses an OpenID Connect server to limit and manage access across all the services. The default installation comes with Keycloak. This domain is used to access the keycloak server over wireguard

    9.

    postgres.sandbox.xyz.net

    Private IP of Nginx server for MOSIP cluster

    This domain points to the postgres server. You can connect to postgres via port forwarding over wireguard

    10.

    onboarder.sandbox.xyz.net

    Private IP of Nginx server for MOSIP cluster

    Accessing reports of MOSIP partner onboarding over wireguard

    11.

    eSignet.sandbox.xyz.net

    Public IP of Nginx server for MOSIP cluster

    Accessing eSignet portal publically

    12.

    healthservices.sandbox.xyz.net

    Public IP of Nginx server for MOSIP cluster

    Accessing Health portal publically

    13.

    smtp.sandbox.xyz.net

    Private IP of Nginx server for MOSIP cluster

    Accessing mock-smtp UI over wireguard

    Wildcard SSL Certificate for the eSignet K8s Cluster:

    • A valid wildcard SSL certificate for the domain used to access the eSignet Kubernetes cluster.

    • This certificate must be stored inside the Nginx server VM for the eSignet cluster.

    • For example, a domain like *.sandbox.xyz.net could serve as the corresponding example.

    Take necessary measures on the firewall level so that the Wireguard server can be reachable on 51820/udp publically.

  • Make sure to clone the k8s-infra github repo for the required scripts in the above steps and perform the steps from the linked directory.

  • If you already have a Wireguard server for the VPC used you can skip the setup Wireguard Bastion server section.

  • Use ls cmd to see the list of peers.

  • Get inside your selected peer directory, and add the mentioned changes in peer.conf:

    • cd peer1

    • nano peer1.conf

      • Delete the DNS IP.

      • Update the allowed IPs to subnets CIDR IPs. For example: 10.10.20.0/23

  • Share the updated peer.conf with respective peers to connect to the wireguard server from Personel PC.

  • Add peer.conf in your PC’s /etc/wireguard directory as wg0.conf.

  • istioctl (version v1.15.0)

    Copy the keys to remote observation node VMs ssh-copy-id <remote-user>@<remote-ip>

  • SSH into the node to check password-less SSH ssh -i ~/.ssh/<your private key> <remote-user>@<remote-ip>

  • Create
    cluster for eSignet services hosting.
  • Import newly created K8 cluster to Rancher UI.

  • 1.

    Wireguard Bastion Host

    2

    4 GB

    8 GB

    1

    (ensure to setup active-passive)

    2.

    1.

    Wireguard Bastion Host

    One Private interface: that is on the same network as all the rest of nodes (e.g.: inside local NAT Network). One public interface: Either has a direct public IP, or a firewall NAT (global address) rule that forwards traffic on 51820/udp port to this interface IP.

    2.

    K8 Cluster nodes

    One internal interface: with internet access and that is on the same network as all the rest of nodes (e.g.: inside local NAT Network).

    3.

    Observation Nginx server

    One internal interface: with internet access and that is on the same network as all the rest of nodes (e.g.: inside local NAT Network).

    4.

    eSignet Nginx server

    1.

    rancher.xyz.net

    Private IP of Nginx server or load balancer for Observation cluster

    Rancher dashboard to monitor and manage the kubernetes cluster.

    2.

    keycloak.xyz.net

    Private IP of Nginx server for Observation cluster

    Administrative IAM tool (keycloak). This is for the kubernetes administration.

    3.

    sandbox.xyx.net

    Private IP of Nginx server for MOSIP cluster

    Wireguard
    k8s-infra
    eSignet
    here
    Wireguard client
    kubectl
    helm
    Ansible
    k8s-infra
    here
    steps
    steps
    installation of required apps:
    pre-requisites
    ports.yml
    Docker
    NFS
    Monitoring
    Logging
    Istio
    Nginx
    pre-requisites
    Initialise pre-requisites
    services
    Onboard
    api-testrig
    pre-requisites
    eSignet mock
    esignet mock
    pre-requisites
    eSignet signup
    steps
    Onboard
    eSignet Architecture diagram

    Observation Cluster nodes

    One internal interface: that is on the same network as all the rest of nodes (e.g.: inside local NAT Network). One public interface: Either has a direct public IP, or a firewall NAT (global address) rule that forwards traffic on 443/tcp port to this interface IP.

    Index page for links to different dashboards of MOSIP env. (This is just for reference, please do not expose this page in a real production or UAT environment)

    RKE1 K8
    ansible-playbook -i hosts.ini docker.yaml
    mkdir -p wireguard/config
    sudo docker run -d \
    --name=wireguard \
    --cap-add=NET_ADMIN \
    --cap-add=SYS_MODULE \
    -e PUID=1000 \
    -e PGID=1000 \
    -e TZ=Asia/Calcutta \
    -e PEERS=30 \
    -p 51820:51820/udp \
    -v /home/ubuntu/wireguard/config:/config \
    -v /lib/modules:/lib/modules \
    --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
    --restart unless-stopped \
    ghcr.io/linuxserver/wireguard
    sudo systemctl start wg-quick@wg0
    sudo systemctl status wg-quick@wg0
    git clone -b v1.2.0.2 https://github.com/mosip/k8s-infra.git
    
    cd k8s-infra/mosip/onprem
    git clone -b <tag> https://github.com/mosip/esignet.git
    cd esignet
    cd deploy
    git clone -b <tag> https://github.com/mosip/esignet-mock-services.git
    cd esignet-mock-services
    git clone -b <tag> https://github.com/mosip/esignet-signup.git
    cd esignet-signup
    peer1 :   peername
    peer2 :   xyz

    Development and Integration with eSignet

    This guide provides a step-by-step approach for developers who want to integrate their application as a Relying Party (RP) with eSignet.

    Prerequisites

    Before integrating your Relying Party application with eSignet, ensure the following are in place:

    Requirement
    Description

    Always fetch the authorize, PAR, token, userinfo endpoint URL dynamically from .well-known/openid-configuration. This ensures your integration remains compatible even if environments or endpoints change.

    🛠️ Step-by-Step implementation:

    Step 1: Redirect user to eSignet Authorization Endpoint

    Add a Sign-in with eSignet button to your login page that links to the authorize URL. A lightweight JavaScript plugin is available from eSignet to render this button automatically. By default, the plugin can be loaded from:

    The button may follow specific branding guidelines such as name, logo usage, color scheme, and size. These are typically defined by the Identity Provider. eSignet provides a that demonstrates recommended styles and customization options for relying party implementations: Additionally, sign-in-button-plugin.js provides PAR and DPoP support. Refer storybook to know more details on how to configure and use the par_callback and dpop_callback parameter.

    {% details title="eSignet Authorization Endpoint Specification" %}

    {% enddetails %}

    PAR Support in Authorization Request

    eSignet supports Pushed Authorization Requests (PAR) as per OAuth 2.0 standards. Using PAR, the RP first submits authorization request parameters directly to eSignet through a secure back-channel PAR endpoint, then receives a request_uri which is used in the authorize URL.

    {% details title="eSignet PAR Endpoint Specification" %}

    {% enddetails %}

    Notes:

    • scope defines what user attributes RP can request.

    • claims enables RP to decide which user attributes are optional & mandatory.

    Step 2: User Authenticates and Consent on eSignet Screen

    eSignet handles:

    🔐 Authentication with the chosen authentication method. Eg: OTP / Biometrics / Wallet 🔐 Consent screen (only if claims are shared)

    Successful authentication

    If authentication succeeds, the user is redirected to the redirect_uri specified in the authorization request, along with an authorization code returned in the code query parameter.

    Failed authentication

    If authentication fails, the user is redirected to the same redirect_uri, but with an error code returned in the error query parameter. It is the RP’s responsibility to handle the error appropriately.

    Step 3: Exchange Code for Tokens

    Exchange authorization code for an Access token using the token endpoint. It is always suggested to use the token endpoint URL published in the .well-known/openid-configuration. This ensures your integration remains compatible even if environments or endpoints change.

    Refer the below for token endpoint details:

    {% details title="eSignet Token Endpoint Specification" %}

    {% enddetails %}

    Step 4: Verify & Parse the Access & ID Token

    Access token generated by eSignet follow [RFC9068] JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens.

    • Validate JWT signature using public key published on eSignet /.well-known/jwks.json

    • Validate aud, iss, exp, iat in both the tokens.

    • Additionally validate auth_time, nonce, acr, at_hash in the ID token.

    💡Key Notes:

    • eSignet does not support user claims in ID token.

    • The sub claim in ID and access token is a pairwise pseudonymous identifier.

    Avoid storing ID Tokens or Access Tokens in browser localStorage or sessionStorage. If an attacker gains access to the browser context, they can extract the tokens and impersonate the user.

    Instead, it is recommended to perform the token exchange and validation on the RP backend and maintain a secure server-side session. The user’s browser should only store a short-lived, HTTP-only, SameSite cookie that maps to this session for stronger protection model.

    Step 5: Get Consented User Claims Using Access Token

    If the Relying Party (RP) needs user attributes (e.g., eKYC data), the developer must implement a call to the userinfoendpoint using the Access Token obtained during token exchange. Always fetch the endpoint URL dynamically from .well-known/openid-configuration

    This ensures your integration remains compatible even if environments or endpoints change.

    The userinfo response is returned as a signed JWT (JWS) by default. The RP must validate the JWT signature using the public keys from /.well-known/jwks.json

    If required, the RP can be configured to request an encrypted (JWE) userinfo response for additional security.

    💡Key Notes:

    • The sub claim in the userinfo JWT will match the sub present in both the Access Token and ID Token, ensuring user identity continuity.

    • Use the claims_locales parameter in the authorize request if user attributes need to be returned in a specific language. (This is supported only when the identity system maintains multilingual claims.)

    Refer the below for userinfo endpoint details:

    {% details title="eSignet Userinfo Endpoint Specification" %}

    {% enddetails %}

    📄 Sample userinfo JWT payload:

    📄 Sample userinfo JWT payload (with claims in 2 languages):

    Always generate fresh state & nonce to prevent replay & CSRF.

  • acr_values defines authentication method options, RP must choose based on the required assurance level.

  • The redirect_uri provided must be an absolute, fully qualified URL (without any wildcard or regex). This URI is then matched against the redirect URIs stored in the eSignet database for the same Client ID. Since the stored URIs may include wildcards or patterns, the matching process allows partial or regex-based checks rather than requiring an exact match.

  • The prompt=consent parameter should be used if the Relying Party (RP) requires eSignet to present a consent screen to the user during every authentication flow. If this parameter is omitted, consent is shown only during the first authorization request, and will be shown again only when the previously granted consent expires (expire duration is configured per client).

  • Client registered with eSignet

    RP must be onboarded and issued a client_id. client_secret is not applicable.

    eSignet well-known endpoint access

    /.well-known/jwks.json

    /.well-known/openid-configuration

    Client Authentication Method

    Only private_key_jwt is supported for token endpoint client authentication. Access to RSA/EC Private Key used by RP to sign the JWT during token request. Note: Should be securely stored and rotated periodically.

    Registered Redirect URI

    Must be pre-configured with eSignet(during onboarding ). It may be:

    • A frontend page

    • A mobile app deeplink / custom scheme

    • Or even a backend endpoint

    Scopes/Claims required by RP

    openid is mandatory. Optional scopes → profile, email, phone, or custom scopes if supported.

    Note: Check the /.well-known/openid-configuration for supported scopes and claims.

    Choose libraries for JWT Creation, Signing & OIDC Integration

    Since private_key_jwt authentication requires the RP to generate a signed JWT for token requests, we recommend using well-supported cryptographic and OIDC client libraries. Developers may choose one based on their language/platform.

    Reference: https://openid.net/developers/certified-openid-connect-implementations/

    UI Storybook
    https://<eSignet-domain>/plugins/sign-in-button-plugin.js
    openapi: 3.0.1
    paths:
      /authorize:
        get:
          tags:
            - OIDC
          summary: Authorization Endpoint
          description: |-
            This is the authorize endpoint of Open ID Connect (OIDC). The relying party applications will do a browser redirect to this endpoint with all required details passed as query parameters.
    
            This endpoint will respond with a basic HTML page to load a JS application in the browser. UI JS application will then echo all the query parameters received in this endpoint to the "/authorization/oauth-details" endpoint as the request body.
    
            All the validations on the query parameter values will be performed in the "/authorization/oauth-details" endpoint.
    
            **Authentication & Authroization**: None
          operationId: get-authorize
          parameters:
            - name: scope
              in: query
              description: Specifies what access privileges are being requested for Access Tokens. The scopes associated with Access Tokens determine what resources will be available when they are used to access OAuth 2.0 protected endpoints. OpenID Connect requests MUST contain the OpenID scope value.
              required: true
              schema:
                type: string
                enum:
                  - openid profile
                  - openid
                  - profile
                  - email
                  - address
                  - phone
                  - offline_access
                default: openid profile
            - name: response_type
              in: query
              description: 'The value set here determines the authorization processing flow. To use the Authorization Code Flow, the value should be configured to "code".'
              required: true
              schema:
                const: code
            - name: client_id
              in: query
              description: Valid OAuth 2.0 Client Identifier in the Authorization Server.
              required: true
              schema:
                type: string
                maxLength: 256
            - name: redirect_uri
              in: query
              description: Redirection URI to which the response would be sent. This URI must match one of the redirection URI values during the client ID creation.
              required: true
              schema:
                type: string
                format: uri
            - name: state
              in: query
              description: 'Opaque value used to maintain state between the request and the callback. Typically, Cross-Site Request Forgery (CSRF, XSRF) mitigation is done by cryptographically binding the value of this parameter with a browser cookie.'
              schema:
                type: string
                maxLength: 256
            - name: nonce
              in: query
              description: 'String value used to associate a Client session with an ID Token, and to mitigate replay attacks. The value is passed through unmodified from the Authentication Request to the ID Token.'
              schema:
                type: string
            - name: display
              in: query
              description: ASCII string value that specifies how the Authorization Server displays the authentication and consent user interface pages to the end user.
              schema:
                type: string
                enum:
                  - page
                  - popup
                  - touch
                  - wap
            - name: prompt
              in: query
              description: Space delimited case-sensitive list of ASCII string values that specifies whether the Authorization Server prompts the End-User for re-authentication and consent.
              schema:
                type: string
                enum:
                  - none
                  - login
                  - consent
                  - select_account
                examples:
                  - consent
            - name: max_age
              in: query
              description: 'Maximum Authentication Age. This specifies the allowable elapsed time in seconds since the last time the end user was actively authenticated by the OP. If the elapsed time is greater than this value, then the OP MUST attempt to actively re-authenticate the end user. The max_age request parameter corresponds to the OpenID 2.0 PAPE [OpenID.PAPE] max_auth_age request parameter. When max_age is used, the ID Token returned MUST include an auth_time claim value.'
              schema:
                type: number
            - name: ui_locales
              in: query
              description: 'End user''s preferred languages and scripts for the user interface, represented as a space-separated list of BCP47 [RFC5646] language tag values, ordered by preference. For instance, the value "fr-CA fr en" represents a preference for French as spoken in Canada, then French (without a region designation), followed by English (without a region designation). An error SHOULD NOT result if some or all of the requested locales are not supported by the OpenID Provider.'
              schema:
                type: string
            - name: acr_values
              in: query
              description: 'Requested Authentication Context Class Reference values. Space-separated string that specifies the acr values that the Authorization Server is being requested to use for processing this Authentication Request, with the values appearing in order of preference. The Authentication Context Class satisfied by the authentication performed is returned as the acr Claim Value, as specified in Section 2. The acr Claim is requested as a Voluntary Claim by this parameter.'
              schema:
                type: string
                enum:
                  - 'mosip:idp:acr:password'
                  - 'mosip:idp:acr:static-code'
                  - 'mosip:idp:acr:generated-code'
                  - 'mosip:idp:acr:linked-wallet'
                  - 'mosip:idp:acr:biometrics'
                  - 'mosip:idp:acr:knowledge'
                  - 'mosip:idp:acr:id-token'
            - name: claims_locales
              in: query
              description: 'End-User''s preferred languages and scripts for Claims being returned, represented as a space-separated list of BCP47 [RFC5646] language tag values, ordered by preference. An error SHOULD NOT result if some or all of the requested locales are not supported by the OpenID Provider.'
              schema:
                type: string
            - name: claims
              in: query
              description: This parameter is used to request specific claims to be returned. The value is a JSON object listing the requested claims. The claims parameter value is represented in an OAuth 2.0 request as UTF-8 encoded JSON.
              schema:
                type: string
            - name: code_challenge
              in: query
              description: 'A challenge derived from the code_verifier, This is required if its a VC scoped request.'
              schema:
                type: string
            - name: code_challenge_method
              in: query
              description: 'A method that was used to derive code challenge, This will be required if code_challenge is provided.'
              schema:
                type: string
            - schema:
                type: string
              in: query
              description: ID Token previously issued by the Authorization Server being passed as a hint about the End-User's current or past authenticated session with the Client.
              name: id_token_hint
            - schema:
                type: string
              in: query
              description: 'The request URI corresponding to the pushed authorization request posted. This URI is a single-use reference to the respective request data in the subsequent authorization request.'
              name: request_uri
          responses:
            '200':
              description: |-
                OK
    
                Loads JS application, and validates the provided query parameters using oauth-details endpoint.
          servers:
            - url: 'https://esignet.collab.mosip.net/v1/esignet'
          x-stoplight:
            id: bx55bzakduy97
    openapi: 3.0.1
    paths:
      /oauth/par:
        post:
          tags:
            - OIDC
          summary: PAR Endpoint
          description: |-
            **PAR - Pushed Authorization Request**
    
            1. Message body of an this request with parameters formatted with x-www-form-urlencoded using a character encoding of UTF-8
            2. Add "pushed_authorization_request_endpoint" in the authorization server metadata.
            3. Client must adds its authentication credentials to the request body using the same rules as for token endpoint request.
            4. Authenticate the client in the same way as at the token endpoint.
            5. Reject the request if the request_uri authorization request parameter is provided.
            6. Validate the request parmeters in the body as it would be validated in oauth-details request.
            7. Upon successful verification, the server MUST generate a request URI and provide it in the response with a 201 HTTP status code.
    
            **request_uri** should be in this format: 'urn:ietf:params:oauth:request_uri:<secure random alpha-numeric string with max length of 25>'
    
            Successfully verified request parameters should be stored in the "par" cache with request_uri as the key. Objects in the "par" cache are set with TTL.
            TTL should be configurable and the expires_in parameter in the response should return same value.
    
            **Not supported:**
              1. client authentication parameters in the PAR request header.
              2. The request parameter as defined in JAR [RFC9101].
              3. API rate limit is left to the infra to handle.
              4. Use of non-registered redirect_uri's are not allowed.
          operationId: post-oauth-par
          requestBody:
            content:
              application/x-www-form-urlencoded:
                schema:
                  type: object
                  required:
                    - scope
                    - response_type
                    - client_id
                    - redirect_uri
                    - client_assertion
                    - client_assertion_type
                  properties:
                    scope:
                      type: string
                      description: Specifies what access privileges are being requested for Access Tokens. The scopes associated with Access Tokens determine what resources will be available when they are used to access OAuth 2.0 protected endpoints. OpenID Connect requests MUST contain the OpenID scope value.
                    response_type:
                      type: string
                      description: 'Value that determines the authorization processing flow to be used. When using the Authorization Code Flow, this value is code.'
                      x-stoplight:
                        id: 06op369n6ipx2
                    client_id:
                      type: string
                      description: OAuth 2.0 Client Identifier valid at the Authorization Server
                      x-stoplight:
                        id: loecaliscjne7
                    redirect_uri:
                      type: string
                      description: Redirection URI to which the response will be sent. This URI MUST exactly match one of the Redirection URI values for the Client pre-registered
                      x-stoplight:
                        id: obnx0myaatag7
                    state:
                      type: string
                      description: client state value echoed.
                    nonce:
                      type: string
                      description: Client's nonce value echoed.
                    display:
                      type: string
                      description: ASCII string value that specifies how the Authorization Server displays the authentication and consent user interface pages to the End-User.
                    prompt:
                      type: string
                      description: 'Space delimited, case sensitive list of ASCII string values that specifies whether the Authorization Server prompts the End-User for re-authentication and consent.'
                    acr_values:
                      type: string
                      description: |-
                        Space separated ACR values, Unknown ACR are ignored. Only registered ACR values will be considered.
                        if none of the provided acr value is among the registered values, Error response is returned with error code "invalid_acr".
                    claims:
                      $ref: '#/components/schemas/Claim'
                    max_age:
                      type: number
                      description: 'Maximum Authentication Age. Specifies the allowable elapsed time in seconds since the last time the End-User was actively authenticated by the OP. If the elapsed time is greater than this value, the OP MUST attempt to actively re-authenticate the End-User. (The max_age request parameter corresponds to the OpenID 2.0 PAPE [OpenID.PAPE] max_auth_age request parameter.) When max_age is used, the ID Token returned MUST include an auth_time Claim Value.'
                    claims_locales:
                      type: string
                      description: 'End-User''s preferred languages and scripts for Claims being returned, represented as a space-separated list of BCP47 [RFC5646] language tag values, ordered by preference. An error SHOULD NOT result if some or all of the requested locales are not supported by the OpenID Provider.'
                    ui_locales:
                      type: string
                      description: 'End-User''s preferred languages and scripts for the user interface, represented as a space-separated list of BCP47 [RFC5646] language tag values, ordered by preference. For instance, the value "fr-CA fr en" represents a preference for French as spoken in Canada, then French (without a region designation), followed by English (without a region designation). An error SHOULD NOT result if some or all of the requested locales are not supported by the OpenID Provider.'
                    code_challenge:
                      type: string
                      description: 'A challenge derived from the code verifier, to be verified against later.'
                    code_challenge_method:
                      const: S256
                      description: A method that was used to derive code challenge.
                      type: string
                    id_token_hint:
                      type: string
                      description: ID Token previously issued by the Authorization Server being passed as a hint about the End-User's current or past authenticated session with the Client.
                    client_assertion_type:
                      const: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer'
                      description: Type of the client assertion part of this request.
                      type: string
                    client_assertion:
                      type: string
                      description: The value of the "client_assertion" parameter contains a single JWT.
                    dpop_jkt:
                      type: string
                      description: 'The value of the dpop_jkt authorization request parameter is the JWK Thumbprint [RFC7638] of the proof-of-possession public key using the SHA-256 hash function.'
                examples:
                  example-1:
                    value:
                      client_id: WMX5pO6dYdCFR3iaVWGclVPNxTNSADDv
                      scope: openid profile
                      response_type: code
                      redirect_uri: 'https://fastlane.com/homepage'
                      display: popup
                      prompt: login
                      acr_values: 'mosip:idp:acr:generated-code'
                      claims:
                        userinfo:
                          name:
                            essential: true
                          phone_number:
                            essential: true
                          email:
                            essential: false
                          address:
                            essential: true
                        id_token: {}
                      nonce: 973eieljzng
                      state: eree2311
                      claims_locales: en
                      code_challenge: UK95aVX_y3R44DF3hssd3wATvtZmO_WejE0P33-pwTs
                      code_challenge_method: S256
                      client_assertion: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJXTVg1cE82ZFlkQ0ZSM2lhVldHY2xWUE54VE5TQUREdiIsImlzcyI6IldNWDVwTzZkWWRDRlIzaWFWV0djbFZQTnhUTlNBRER2IiwiYXVkIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6ODA4MC92MS9lc2lnbmV0L29hdXRoL3BhciIsImlhdCI6MTUxNjIzOTAyMn0.B250eeJsmBesAlYXhK-QUSi6bLOFqHCaKgXocGgUJvp5XjaiWLH1H722pjaXRaK3Eczs3HTW8RxDKQefiT6AIm4ZgQjacNZzlzca_tIc8-5_WWzVUAIfvv6NJ9SLTKJdlvXJKFhhCeLrCsvENJsfZRborkrh-cVMod3iLTK3lPFz0ylwhZ5NV1L9mgVM-0-HQO3HnG0UI0zokmZXDzkmrJsnMV_NPkSnJsaxpGsw9R9Ma5RTGqg7_l-okB5EadUoOMV8OKnloqzja1NXrBGCQZoAq2GDg9bchgHaQoTnZXpaVLgGWxlHOkLXGj15aK_JzGf_JOBRg12mamatWj_ZYA
                      client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer'
          responses:
            '201':
              description: CREATED
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      request_uri:
                        type: string
                        description: The request URI corresponding to the authorization request posted. This URI is a single-use reference to the respective request data in the subsequent authorization request.
                      expires_in:
                        type: number
                        description: A JSON number that represents the lifetime of the request URI in seconds as a positive integer.
                      error:
                        type: string
                        description: 'Error code, available in error response.'
                        enum:
                          - invalid_request
                          - invalid_client_id
                          - invalid_redirect_uri
                          - invalid_scope
                          - invalid_acr
                          - invalid_response_type
                          - invalid_display
                          - invalid_prompt
                      error_description:
                        type: string
                        description: 'Error description, available in error response.'
                  examples:
                    example-1:
                      value:
                        request_uri: 'urn:ietf:params:oauth:request_uri:6esc_11ACC5bwc014ltc14eY22c'
                        expires_in: 10
                    example-2:
                      value:
                        error: invalid_request
                        error_description: invalid_request
          servers:
            - url: 'https://esignet.collab.mosip.net/v1/esignet'
          x-stoplight:
            id: 9zp5uhyyzp9w6
        parameters:
          - schema:
              type: string
            in: header
            name: DPoP
            description: 'A DPoP proof is a JWT [RFC7519] that is signed (using JSON Web Signature (JWS) [RFC7515]) with a private key chosen by the client. For more details refer - https://datatracker.ietf.org/doc/html/rfc9449#section-4.2'
    openapi: 3.0.1
    paths:
        /oauth/v2/token:
        post:
          tags:
            - OIDC
          summary: Token Endpoint V2
          description: |-
            Once the client / relying party application receives the authorization code through redirect, this OIDC complaint endpoint will be called from the relying party backend application to get the ID and access token.
    
            1. The only supported client authentication methods : <b>private_key_jwt</b>
            2. clientAssertion is a signed JWT with Clients private key, corresponding public key should be shared with IdP during the OIDC client registration process.
            3. clientAssertion JWT payload must be as below: 
    
            The JWT MUST contain the following REQUIRED Claim Values and MAY contain the additional OPTIONAL Claim Values:
    
            **iss**<span style="color:#FF0000">*</span> (Issuer): This MUST contain the client_id of the OAuth Client.
    
            **sub**<span style="color:#FF0000">*</span> (Subject): This MUST contain the client_id of the OAuth Client.
    
            **aud**<span style="color:#FF0000">*</span> (Audience): Value that identifies the authorization server as an intended audience. The authorization server MUST verify that it is an intended audience for the token. The audience SHOULD be the URL of the authorization server's token endpoint.
    
            **exp**<span style="color:#FF0000">*</span> (Expiration): Time on or after which the ID token MUST NOT be accepted for processing.
    
            **iat**<span style="color:#FF0000">*</span>: Time at which the JWT was issued.</p>
    
            **jti**<span style="color:#FF0000">*</span>: Random unique string</p>
    
            **Note**: The Client Assertion JWT can contain other Claims. Any Claims used that are not understood WILL be ignored.</p>
          operationId: post-token-v2
          requestBody:
            description: ''
            content:
              application/x-www-form-urlencoded:
                schema:
                  type: object
                  properties:
                    grant_type:
                      const: authorization_code
                      description: Authorization code grant type.
                    code:
                      type: string
                      description: 'Authorization code, sent as query param in the client''s redirect URI.'
                    client_id:
                      type: string
                      description: Client Id of the OIDC client.
                    client_assertion_type:
                      const: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer'
                      description: Type of the client assertion part of this request.
                    client_assertion:
                      type: string
                      description: 'Private key signed JWT, This JWT payload structure is defined above as part of request description.'
                    redirect_uri:
                      type: string
                      description: Valid client redirect_uri. Must be same as the one sent in the authorize call.
                    code_verifier:
                      type: string
                      description: |-
                        A cryptographically random string that is used to correlate the
                              authorization request to the token request.
                  required:
                    - grant_type
                    - code
                    - client_assertion_type
                    - client_assertion
                    - redirect_uri
                examples:
                  Example 1:
                    value:
                      grant_type: authorization_code
                      code: tyemdnjdfornfedg
                      client_id: WMX5pO6dYdCFR3iaVWGclVPNxTNSADDv-kV7VBcnzvY
                      client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer'
                      client_assertion: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE2OTg2MzE0NjAsIm5iZiI6MTY5ODYzMTQ2MCwiZXhwIjoxNjk4NjMxNTI1LCJqdGkiOiI1ZFFjaWhtb2lfQTlXMmlERGpYcDgiLCJzdWIiOiJXTVg1cE82ZFlkQ0ZSM2lhVldHY2xWUE54VE5TQUREdi1rVjdWQmNuenZZIiwiaXNzIjoiV01YNXBPNmRZZENGUjNpYVZXR2NsVlBOeFROU0FERHYta1Y3VkJjbnp2WSIsImF1ZCI6Imh0dHBzOi8vZXNpZ25ldC5jb2xsYWIubW9zaXAubmV0L3YxL2VzaWduZXQvb2F1dGgvdG9rZW4ifQ.G-OxPmb2wBq7R52PELNss9FCwvv_i2456FE4oag25BuZjwH6CgB8LDLmfCJdzeLGRuFp_MrKskGTkpsWI0RWLNtqZ7jvQTvSq8zQICusIFh9kcciWbkMsOZQqN91gPtdrn3WRS6xD7TxzwvrAeuqx4lTBbWNYTF2GQ3Zagq0t6ogOtPWg0wNioW3m11jWIdwooJ8jI2Z5oN772Lerrs1AXMnipLxQm4rdMM54taeHFrrXyxqFjoiq-bglrpHtCqeG6QFqhpQrRlIsLLoli8F1LU8Mu3Fw7ifCd6KEj9JNM_sPHjAy-JRg_dgjNdHL5tqtHzUsD5sSmLop33U4WH3Ow
                      redirect_uri: 'https://fastlane.com/homepage'
                      code_verifier: MN1Q0nNAKkqOu5EaNBKf2gYD4maYv9ZxLd-48N2_kTM
          responses:
            '200':
              description: OK
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      id_token:
                        type: string
                        description: |-
                          Identity token in JWT format. Will have the below claims in the payload.
                          <ul>
                          <li>iss</li>
                          <li>sub</li>
                          <li>aud</li>
                          <li>exp</li>
                          <li>iat</li>
                          <li>auth_time</li>
                          <li>nonce</li>
                          <li>acr</li>
                          <li>at_hash</li>
                          </ul>
    
                          It is non-null only in OIDC flow. otherwise the id_token is not returned.
                      access_token:
                        type: string
                        description: The access token in JWT format. This token that will be used to call the UserInfo endpoint.
                      token_type:
                        enum:
                          - Bearer
                          - DPoP
                        description: 'The type of the access token, set to either Bearer or DPoP'
                      expires_in:
                        type: number
                        description: 'The lifetime of the access token, in seconds.'
                        format: duration
                      c_nonce:
                        type: string
                        description: JSON string containing a nonce to be used to create a proof of possession of key material when requesting a Credential.
                      c_nonce_expires_in:
                        type: number
                        description: JSON integer denoting the lifetime in seconds of the c_nonce.
                    required:
                      - access_token
                      - token_type
                      - expires_in
                  examples:
                    Example 1:
                      value:
                        token_type: Bearer
                        access_token: eyJraWQiOiJLT19tVHBfc1QwemxGRVVkX25UdGhmbzl0RTlTX21GQnJ6OTFwZjd5RFFBIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJQVlJtZkRwZ1pKcXZMTWZZcTZwcUItTDNZQTZXR3dYZmxiTlJpVWF6THJjIiwiYXVkIjoiaHR0cHM6XC9cL2VzaWduZXQtbW9jay5jb2xsYWIubW9zaXAubmV0XC92MVwvZXNpZ25ldFwvdmNpXC9jcmVkZW50aWFsIiwiY19ub25jZV9leHBpcmVzX2luIjo0MCwiY19ub25jZSI6IkN0OXJwUUZiOTZRU1N3Z0hBZkRPIiwic2NvcGUiOiJzYW1wbGVfdmNfbGRwIiwiaXNzIjoiaHR0cHM6XC9cL2VzaWduZXQtbW9jay5jb2xsYWIubW9zaXAubmV0XC92MVwvZXNpZ25ldCIsImV4cCI6MTY5ODYzNTczOSwiaWF0IjoxNjk4NjMyMTM5LCJjbGllbnRfaWQiOiI4OFZqdDM0YzVUd3oxb0oifQ.EAWkcaDUTMH1FcrXdsj4s-y9t8gVB1YBiIZ6VqZD3ZSGR3OrkIQUN2y8vbtvXJv8WAVV_0pvphFjIa9gVRP63_vdZipJ3h04vYcpyfTn50Yml-77uhB_JgHeQWZ0rnCQ1LQGSdSYKro9A1smevVCb1vyPf6QoQPumzKHJ9Jg7SojyhXON2sdIn94Xc5-gok-jGQEapbIBm3RhUEsFPGl7MjaMqBpodV-JOuEi0j_7VfxhLTXXoYZm_-h2aZCWJ9MQDtUC8TwNp-ap5f-O4lQx_M79jyn2mXa0NtoPPIQeffnCPq-uS43C0LZ9CQTfwIC4xV8-x2ema2fHWvtebSsmQ
                        expires_in: 3600
                        c_nonce: Ct9rpQFb96QSSwgHAfDO
                        c_nonce_expires_in: 40
              headers:
                Cache-Control:
                  schema:
                    const: no-store
                Pragma:
                  schema:
                    const: no-cache
            '400':
              description: Bad Request
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      error:
                        type: string
                        enum:
                          - invalid_transaction
                          - invalid_assertion
                          - invalid_redirect_uri
                          - invalid_input
                          - unknown_error
                          - invalid_request
                          - invalid_assertion_type
                          - invalid_pkce_code_verifier
                          - unsupported_pkce_challenge_method
                          - pkce_failed
                          - invalid_dpop_proof
                          - use_dpop_nonce
                        description: The error code.
                      error_description:
                        type: string
                        description: Optional text providing additional information about the error that occurred.
                    required:
                      - error
          servers:
            - url: 'https://esignet.collab.mosip.net/v1/esignet'
          x-stoplight:
            id: bx4h4esbzst37
        parameters:
          - schema:
              type: string
            in: header
            name: DPoP
            description: 'A DPoP proof is a JWT [RFC7519] that is signed (using JSON Web Signature (JWS) [RFC7515]) with a private key chosen by the client. For more details refer - https://datatracker.ietf.org/doc/html/rfc9449#section-4.2'        description: 'A DPoP proof is a JWT [RFC7519] that is signed (using JSON Web Signature (JWS) [RFC7515]) with a private key chosen by the client. For more details refer - https://datatracker.ietf.org/doc/html/rfc9449#section-4.2'
    openapi: 3.0.1
    paths:
          /oidc/userinfo:
        get:
          tags:
            - OIDC
          summary: UserInfo Endpoint
          description: |-
            Once the access token is received via the token endpoint, relying party backend application can call this OIDC compliant endpoint to request for the user claims.
    
            Consented user claims will be returned as a JWT. This JWT will be a nested JWT which is a signed using JWS and then encrypted using JWE. 
    
    
            **Example**: Assuming the below are the requested claims by the relying party
    
            name : { "essential" : true }
    
            phone: { "essential" : true }
    
            **Response 1**: When consent is provided for both name and phone number:
    
            { "name" : "John Doe", "phone" : "033456743" }
    
            **Response 2**: When consent is provided for only name:
    
            { "name" : "John Doe" }
    
            **Response 3**: When Claims are requested with claims_locales : "en fr"
    
            { "name#en" : "John Doe", "name#fr" : "Jean Doe", "phone" : "033456743" } 
    
            **Supported User Info Claims**
            <ul>
            <li>sub - Partner Specific User Token (PSUT)</li>
            <li>name</li>
            <li>address</li>
            <li>gender</li>
            <li>birthdate</li>
            <li>profile photo</li>
            <li>email</li>
            <li>phone</li>
            <li>locale</li>
            <li>Custom - individual_id (You share this claim as a system-level config and it can be UIN, perceptual VID or temporary VID)</li>
            </ul>
          operationId: get-userinfo
          responses:
            '200':
              description: OK
              content:
                application/jwt:
                  schema:
                    type: string
                    description: 'The response is signed and then encrypted, with the result being a Nested JWT. Signed using the authentication system''s private key. Signed full JWT will then be encrypted using OIDC client''s public key.'
                    format: jwt
                  examples:
                    Example 1:
                      value: eyJraWQiOiJlU0dtNm5LcGppUHRJMnAzbVVWNHBWWm9nY0VHaExMV2dCNXNuUzNvbUNzIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiIyNTgwMDg2NDcxMDgzMDEzNjAzMjA2NDYwMDYwMDU4NDE3NTEiLCJhZGRyZXNzIjp7ImxvY2FsaXR5IjoiUmFiYXQgIn0sIm5hbWUiOiJhcnZpbmQiLCJwaG9uZV9udW1iZXIiOiI3ODY0ODQ2MzQzIiwiZW1haWwiOiJhcmF2aW5kaDIwOTBAZ21haWwuY29tIn0.WqkXaalFJu1nzAgoSmLKOHddX7_tkgcTEZRK8uedfl6rbNRZ7Lv0uayTT--3r4Z0Wlnjh1pUMreFvKd1yfirIf0LaPvuTBe5AVRRUMGPhPkSCq_ietytg75uNUH-Z91jLluh8mIZ5BlsGf_MfdkKD10pvzG9cWowWeWlD2hj-YNw05SUAdvZtHeN8ayMTaPOa-Jc0Sv3kXS0xM6Geizq5QCpIWaavZNw9GJF8GEizGK3klq3od9PfHKrh8XruUFM849iyAShIUTgr9mFlWzHVuTqbpcc2ZptLY_egOq8qKA5guBEplB92PlaxQQeyxRvMezZtDiRdzf5BSpM_1ok0g
            '401':
              description: Unauthorized
              headers:
                WWW-AUTHENTICATE:
                  schema:
                    type: string
                    enum:
                      - invalid_token
                      - unknown_error
                      - invalid_dpop_proof
                      - use_dpop_nonce
                  description: 'Bearer error=invalid_token,  error_description=MOSIPIDP123: A user info request was made with an access token that was not recognized.'
          security:
            - Authorization-access_token: []
            - Authorization-DPoP: []
          servers:
            - url: 'https://esignet.collab.mosip.net/v1/esignet'
          x-stoplight:
            id: 6iqtka3aua3f2
        parameters:
          - schema:
              type: string
            in: header
            name: DPoP
            description: 'A DPoP proof is a JWT [RFC7519] that is signed (using JSON Web Signature (JWS) [RFC7515]) with a private key chosen by the client. For more details refer - https://datatracker.ietf.org/doc/html/rfc9449#section-4.2'
      components:
        securitySchemes:
          Authorization-DPoP:
            type: http
            scheme: DPoP
            description: 'A DPoP-bound access token is sent using the Authorization request header field with an authentication scheme of DPoP.'
          Authorization-access_token:
            type: http
            description: Access token received from /token endpoint
            scheme: bearer
    {
      "sub": "63EBC25D699305A26EE740A955852EAB2E6527BFF2F5E9E5562B502DACECD020",
      "address": {
        "street_address": "#991, 47 Street, 6 block",
        "country": "India",
        "locality": "Bengaluru",
        "region": "Bengaluru Urban",
        "postal_code": "14022"
      },
      "gender": "Male",
      "phone": "91000395660",
      "name": "Manoj",
      "email": "[email protected]"
    }
    {
      "sub": "63EBC25D699305A26EE740A955852EAB2E6527BFF2F5E9E5562B502DACECD020",
      "name#en": "Manoj",
      "address#en": {
        "formatted#en": "#991, 47 Street, 6 block"
      },
      "phone": "91600395660",
      "gender#kn": "ಗಂಡು",
      "name#kn": "ಮನೋಜ್",
      "address#kn": {
        "formatted#kn": "#991, 47 ಸ್ಟ್ರೀಟ್, 6 ಬ್ಲಾಕ್"
      },
      "gender#en": "Male",
      "email": "[email protected]"
    }
    esignet-mock-services/mock-identity-system at master · mosip/esignet-mock-servicesGitHub
    Logo