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...
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.
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.
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.
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.
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.
Explore the eSignet Roadmap & Releases to stay updated on key milestones, new features, and major updates.
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.
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.
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.
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.
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.
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
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.
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.
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.
A Modern and Inclusive Digital Identity Authentication Solution
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.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
.
.
Explore eSignet Authentication: Your Interactive Health Portal Experience.
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:
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
Please refer for Signup module API documentation.
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.
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.
Bug identification and fixes.
Technology evaluation support.
UI/UX design improvements.
Documentation.
For code contributions, refer here.
To engage with us on our community forum and connect with fellow contributors visit here.
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
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.
Bridging the Digital Divide Offers flexible verification modes to cater to users across the digital access spectrum.
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.
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.
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.
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.
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.
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.
mosip:idp:acr:password For password-based authentication.
mosip:idp:acr:knowledge For Knowledge Based identification(KBI), demographic data based identity authentication.
Explore eSignet roadmap for key milestones, objectives, and highlights every year.
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:
mock-relying-party-ui
mock-relying-party-service
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.
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.
To build and run the mock relying party portal please refer to the below README.md file
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.
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.
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.
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.
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! 🚀
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:
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:
Release Name: IdP (Beta)
Release Date: 8th January, 2023
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.
The basic features such as,
Login with OTP
Login with Biometrics
are available as a part of this release.
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.
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.
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.
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.
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.
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.
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 .
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.
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.
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.
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.
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:
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.
When users access the health services portal for the first time, they are redirected to the eSignet Signup Portal to complete their registration.
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.
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.
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:
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.
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.
Please refer to the sequence diagram below for the detailed working flow of the profile registry plugin.
Please for the Profile Registry Plugin interface.
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.
To know about the query parameters that are required to test the OIDC flow, refer to our API documentation.
We also have Postman scripts available under the folder in the eSignet GitHub repository.
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 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 Wallet: Securely store and manage verifiable credentials.
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:
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.
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 (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:
Personal information (e.g., date of birth, address, social security number)
Account related details (e.g., last transaction amount, account creation date)
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.
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.
Release Number: v1.4.2(Patch)
Release Date: 22nd Nov, 2024
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:
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.
Fast, secure authentication for residents made easy.
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.
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.
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.
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).
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
Inji
OpenCRVS











Please refer below for more details.
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.
{
"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
}send an OTP
share KYC data about the individual post-authentication
Below are the authentication factors supported:
PIN-based authentication
OTP authentication
Biometric authentication
Github Repository
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.
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.



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.
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.
The Resident has installed a mobile wallet (for example., Inji app) on their mobile device
The Resident has received the policy number from their insurance provider, which would be required for KBI
The resident accesses their digital wallet (e.g., Inji Wallet) and taps on the plus '+' button.
Resident selects their preferred issuer from the available list.
Resident provides their Policy Number, Full Name, and Date of Birth as credentials for KBI login.
The resident clicks on the Login button.
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.
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.
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.
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:
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:
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.
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.
Postman Utility Library Installation
Added clear installation instructions for the postman-utility-lib in the README file to simplify the setup process.
Updated Docker Configuration
Updated the Docker Compose file to replace mosipqa images with mosipid images, ensuring consistency with the latest environment configurations.
Repository Released
Tags
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:
eSignet supports the login flow for the following authentication factors:
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.
5. The resident is then navigated to the Consent page. On this page, the Essential and Voluntary claims are displayed.
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.

eSignet is built using the below tools and technologies.
eSignet leverages a combination of backend technologies to ensure secure identity management and seamless service delivery.
eSignet utilizes high-performance storage solutions for managing structured and real-time data.
eSignet is designed for containerized and automated deployments, leveraging modern DevOps tools.
eSignet ensures reliability and stability through automated testing frameworks and API testing tools.
Please refer below for all the latest release details ✨
Name: eSignet
Date: 2nd December, 2025
Name: v1.6.2 (Patch)
Date: 28th August, 2025
Name: eSignet(Patch)
Date: 29th July, 2025
Name: eSignet(Patch)
Date: 24th Feb, 2025
Name: eSignet
Date: 23rd Jan, 2025
Name: eSignet(Patch)
Date: 22nd Nov, 2024
Name: eSignet(Patch)
Date: 15th July, 2024
Name: eSignet
Date: 23rd April, 2024
Name: eSignet (Password based authentication)
Date: 23rd February, 2024
Name: eSignet (VCI)
Date: 11th December, 2023
Name: eSignet (consent registry)
Date: 22nd September, 2023
Name: eSignet
Date: 14th April, 2023
Name: IdP
Date: 8th January, 2023
Release Name: eSignet
Release Date: 22nd September, 2023
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.
Below are the features available in the release:
Login with OTP
Login with biometrics
Wallet based authentication
Multi-language support
eSignet:
artifactory-ref-impl:
mosip-config:
For details for deployment go through the helm charts in the .
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.
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.
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.
Necessary user information that the relying party must collect to fulfill service obligations to residents.
Additional user details that residents may choose to provide, enabling access to supplementary features offered by the relying party.
When eSignet is integrated with MOSIP IDA, the following standard OIDC user claims are supported:
name
gender
address
birthdate
The following properties in application-default.properties hold the supported values:
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.
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.
On Inji, the resident can see the VC that is activated for online login. Select the VC and click Verify.
After clicking on Verify, the resident is asked to perform face authentication. On successful authentication, the Consent screen is displayed.
Here, the residents can provide their consent and click Allow. A successful message is displayed on Inji.
The resident can log into the relying party portal and view their details on the user profile page.
While you want to explore eSignet, you can use the following test personas in our Collab environment.
Individual images are included to facilitate selfie authentication for the Inji application.
Please select the appropriate image file corresponding to the chosen UIN above.
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 .
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 .
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.
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.
eSignet's ".well-know" directory contains the four files mentioned below:
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
The APIs exposed by this interface are used by to perform wallet binding while it is implemented by .
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.
The Key Binding functionality is depicted in the diagram below:
Release Number: v.1.4.0
Release Date: 23rd April, 2024
Version 1.4.0 of eSignet introduces a new authentication mode and addresses known issues.
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 .
Fixes for known issues from v1.3.0
For details on deployment, refer to the in the eSignet repository.
Release Name: eSignet
Release Date: 14th April, 2023
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.
The features included in this release are:
Login with OTP
Login with biometrics
Wallet-based authentication
Multi-language support
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:
Liveliness check
Face match
Document verification
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.
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).
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.
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.
Initializing every workflow run with the required configuration based on the provided input.
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).
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.
Verifier details should be added signup-identity-verifier-details.json
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_"
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.
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.
Note:
Currently, only the ldp_vc format in the is supported.
Also, the is not supported as yet.
Below are the steps for on-boarding a digital wallet as an OAuth Client and using the eSignet APIs to download verifiable credentials.
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.
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 .
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.
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.
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.
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.
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.
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.
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.
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"
The diagram below illustrates the process of wallet local authentication in eSignet through the use of a digital wallet.
The image below is a block diagram of the sign up portal comprising various components along with the different layers and external systems.
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.
This service is the primary backend spring Java application that incorporates various layers.
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.
Rest APIs: This layer exposes REST endpoints for the functionality implemented in the service layer.
Cache Layer: The signup service maintains complete transaction details in the cache. Currently, supports “simple” and “redis” cache types.
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.
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.
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)
Stories Verified: 10
Test cases: 401
Passed: 386
Failed: 9
Test cases: 12
Passed: 11
Failed: 1
Skipped: 0
Test cases: 261
Passed: 261
Failed: 0
Skipped: 0
Release Number: v.1.3.0
Release Date: 14th March, 2024
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.
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.
Different service interactions require different messaging and UI contexts. For instance:
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.
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.
The guides cover integrating external systems such as identity verification platforms and authentication services with the SignUp portal.
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%
Captcha validation
Consent storage
esignet
mosip-config
artifactory-ref-impl
digital-credential-plugins
Captcha validation









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

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.


















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.

email
phone_number
picture

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.
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.
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.
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
The title and subTitle fields support language-specific values using locale keys. For example:
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.
{
"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.
OpenJDK 11
Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible.
2.3.6
Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform.
1.18.24
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
1.2.3
Logback is a logging framework that provides a fast, reliable, and highly configurable solution for generating logs in Java applications.
1.6.9
The OpenAPI Specification is a specification language for HTTP APIs that provides a standardized means to define your API to others.
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.
18.2v
React lets you build user interfaces out of individual pieces called components.
15
PostgreSQL also known as Postgres, is a free and open-source relational database management system (RDBMS) emphasizing extensibility and SQL compliance.
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.
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.
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.
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.
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 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.
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.
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.
The 1.3.0 version of eSignet focuses on launching new features in authentication modes and support for Sign-up service:
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.
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.
Fixes for known VCI issues from v1.2.0
Below are the features available in the release:
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.
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.
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:
Enables developers to test authentication flows safely.
Returns claims and responses similar to production with mock user data.
Ideal for validating OIDC client configuration and redirect flows.
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:
Connects to the live MOSIP identity system for real user authentication.
Returns genuine user claims and ID tokens after successful login.
Suitable for end-to-end verification before deployment.
To get started with integration. and onboard your client to eSignet please refer to this page
Release Number: v1.5.1(Patch)
Release Date: 24th Feb, 2025
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.
Fixed bug in IDT authentication: Resolved issues related to invalid individual ID handling, including incorrect individual IDs provided in the request body.
Reused Challenge Authentication: Added validations for reused challenge IDT(ID token)-based authentication, ensuring it now functions correctly.
Periodic Slot Availability Checks in UI: Added support for periodic slot availability checks during the loading screen process, based on configuration.
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!
Please refer to for the list of all known issues.
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.
eSignet mock services
Introduced json schema based validation. Below two properties are added:
mosip.mock.ida.identity.schema.url
mosip.mock.ida.update-identity.non-mandatory.fields
Please refer for details.
Release Number: v.1.4.1
Release Date: 15th July, 2024
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.
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
Improved Input Field Validations: Enhanced input field validations using regex implementation.
User-Friendly Error Messages: Improved error messages for better user experience.
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 .
Key Known Issue:
Please refer to for the list of all known issues.
For details on deployment, refer to the in the eSignet repository.
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.
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.
Verification is performed on various configurations as mentioned below
● Default configuration - with 7 Lang (English/Khmer/Hindi/Kannada/Tamil/Arabic/French).
Signup Portal
Login with Password
Forgot Password
Login with OTP
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.
Test Rate: 99% with Pass rate: 97%
Here is the detailed breakdown:
API Based Testing - eSignet
Total Test Cases: 1601
Passed - 1555
Failed - 44
Skipped - 2
UI Based Testing
Total Test Cases: 664
Passed - 636
Failed - 15
Skipped - 13
Total Test Cases: 1116
Passed - 1111
Failed - 3
Skipped - 2
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.
A Modern and Inclusive Digital Identity Authentication Solution
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.
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.
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.
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.
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.
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!
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.
To experience the various methods of login and authentication in the demo health services portal using eSignet, follow the detailed instructions below:
Navigate to the relying party’s demo portal in the Collab environment, and click on Sign In with eSignet.
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 .
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 .
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,
Install the Inji APK on your mobile device using
Download your credentials on Inji. For details on how to download the credential, click (Refer to step 3 in the guide)
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 .
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.
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.
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.
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.
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.
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.
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
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.
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.
The user navigates to the portal.
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.
To begin the signup process, click on Sign up with Unified Login, located at the bottom of the page.
Enter your 8-9 digit mobile number in the provided field and click Continue to proceed.
Enter the OTP received on the mobile number and click Verify.
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.
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.
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.
The login screen appears, displaying the available login options for the user. To proceed, the user selects the Login with OTP option.
Enter the mobile number used during account setup in the previous steps and click Get OTP.
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.
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.
The user is now redirected to the page where the steps for the eKYC process are listed. Click on the Proceed option to continue.
Choose an eKYC provider and click on the Proceed option.
Select the I Agree to the ‘Terms & Conditions’ checkbox and click on the Proceed option to continue.
A video preview is displayed along with general guidelines to be followed during the video eKYC process.
The eKYC process is initiated please follow the instructions on the screen to complete the process.
A verification success message is displayed.
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.
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.
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.
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.
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 .
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.
This service is the primary backend Spring Java application that incorporates various layers and integrates with other components mentioned on this page.
Core components: The eSignet core library is used to manage core service interfaces, constants, exceptions, validators, and utility methods.
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.
The provides a user-friendly registration interface that allows users to securely create and manage accounts.
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.
This guide helps the developers of the relying party to get started with their development environment.
Before integrating with eSignet, ensure the following setup is completed:
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.)
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.
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.
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
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.
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.
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
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.
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.
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.
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.
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.
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.
Rotate keys every 6–12 months, or immediately if compromised.
The generated key pair must default to "signing" usage.
The relying party must handle the callback response appropriately before allowing the user to proceed.
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://*
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.
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
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.
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.
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.
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
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.
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.
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.
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.
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.
Locate the run_auth.bat file within the extracted folder.
Double-click on the run_auth.bat file to start the authentication MDS.
esignet
esignet-mock-services
id-repo
esignet-signup
mosip-openid-bridge
mosip-openid-bridge
SubirdRC Integration (Using InjiWeb)
2265
2191
59
15























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.
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:
SSL termination
Proxy pass
TCP communication
UDP communication
Reverse Proxy
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 can be sectioned into the below three sections.
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.
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.
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 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.

Lastly, the landing page of the eSignet UI showcases the available .well-known endpoints.
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

Please refer below for more details.
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.
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"
]
}kernel-auth-service
kernel-otp-manager
Sunbird
The user is not getting registered with an 8-digit UIN in MOSIP IDA.
Intermittent: Signup register and reset password are throwing errors but able to login.
esignet
esignet-signup
esignet-mock-services
esignet-plugins
ID Authentication
ID Repository
kernel - core
kernel-notfication-service
kernel-idgenerator-service
kernel-auth-adaptor
digital-credential-plugins
Intermittent issue faced in Biometric Login when used in certain organization/domain specific laptops.
eSignet
mosip-config
esignet-mock-services
mosip-ref-impl/kernel
artifactory-ref-impl
eSignet Signup
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
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).
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.
Verification is performed on various configurations as mentioned below:
Default configuration - with 3 Lang (English/ Arabic /French)
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:
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.
Total Test cases: 245
Passed: 228
Failed: 14
Skipped: 3
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%
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.
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.
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
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.
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 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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
Verification is performed on various configurations as mentioned below
● eSignet with 7 Languages (English/Khmer/Hindi/Kannada/Tamil/Arabic/French)
● Signup in 2 languages (Khmer/English)
Signup Portal with mock ID
Login with Password with mock ID
Forgot Password with mock ID
Login with OTP with mock ID
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.
Test Rate: 98% with Pass rate: 97%
Here is the detailed breakdown:
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
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.
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.
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
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.
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 .
The below recommended Github workflow allows developers to submit code and documentation contributions to eSignet open-source repositories.
Fork repository of interest.
Clone the fork to your local machine. E.g.:
Set the upstream project as the original from where you forked. E.g.:
Make sure you never directly push upstream.
Create a new issue in GitHub.
Follow the issue template provided.
Please provide as much information as possible.
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.
4. Create a new issue branch with the name of the issue.
5. Make sure you are up-to-date with the upstream repo.
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.
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.
The scope of testing is to verify fitment to the specification from the perspective of:
Functionality
Deployability
Configurability
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
Release Number: v1.6.2 (Patch)
Release Date: 28th August, 2025
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.
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:
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.
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.
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
Please keep reading for more details in the OpenID identity assurance 1.0 spec.
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.
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.
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.
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
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.
eSignet offers multiple ways to incrementally create a user profile, based on the level of assurance and regulatory requirements of the relying party.
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.
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.
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.
eSignet includes a secure password reset flow, ensuring users can easily recover access to their accounts while maintaining identity integrity and system security.
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.
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.
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
esignet
esignet-mock-services
mosip-file-server
mosip-plugins/sign-in-with-esignet
mosip-onboarding
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




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

0%
Confirm the origin and upstream.
In your local repository, fetch the upstream.
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.
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.
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
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.
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.
Mobile Specification
iphone 15 plus
Safari
17
17.2
1290x2796 pixels
6.7 inches
iphone 7
Safari
15
Desktop browser specification
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
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.
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
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.
Please refer to how our mock-plugin implements the eSignet Authenticator plugin to integrate eSignet with the mock identity system.
Also, look at the reference implementation enabling the eSignet integration with the MOSIP identity system.

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.
Bug Fixes Multiple known issues have been resolved to improve stability and reliability. Please refer here for full list of bug fixes.
Security Fixes Applied critical security patches to address vulnerabilities and strengthen system security.
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:
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)
eSignet and the Signup module have been verified with these yet-to-be-released versions of MOSIP modules.
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.
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.
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.
esignet
esignet-signup
esignet-mock-services
esignet-plugins
PMS
IDA
1.2.2.0 (for identity assurance 1.0 support)
Sunbird
ID Repository
1.2.3.0 (for identity assurance 1.0 support)
Keymanager
eSignet: N/A
Signup: N/A
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
API Documentation
Integration Guides
End User Guides
QA Report
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
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
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
Update values file for postgres init here.
Execute initialise-prereq.sh script to initialise postgres and keycloak.
During deployment, the system will prompt for user input to select the appropriate plugin. The available options are listed below:
esignet-mock-plugin
mosip-identity-plugin
sunbird-rc-plugin
custom-plugin"
There are two ways to proceed, either with mosip identity plugin or with mock 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.
Download and import eSignet-with-mock.postman_environment.json and eSignet.postman_collection.json postman collection from here)
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.
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.
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
Update the clientId in Deployment
Once the clientId is created and activated, update the clientId in the mock-relying-party-ui deployment.
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
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.
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
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.
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
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
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%
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 .
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
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.
Verification is performed on various configurations as mentioned below:
Default configuration- with 3 Lang
Virtual countries
1 Lang configuration
2 Lang configuration
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:
Total Test cases: 642
Passed: 590
Failed: 7
Skipped: 45
Note: 45 test cases are marked as skipped as they were not automated.
Total Test cases: 175
Passed: 175
Failed: 0
Skipped: 0
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%
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%
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 .
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.
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
URL pointing to the raw JSON schema defining the KBI field details.
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": "" } \ }
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'}}
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
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
Property to set the Time To Live(TTL) per cache, applicable to both Redis and simple cache mosip.esignet.cache.expire-in-seconds
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
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
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.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
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.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.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.
Release Name: v.1.5.0
Release Date: 23rd Jan, 2025
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.
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.
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.
Security issues have been addressed to enhance platform security and speed. For a complete list of fixed bugs, please refer to this .
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!
Please refer to for the list of all known issues.
Release Number: v1.6.1
Release Date: 29th Jul, 2025
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.
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.
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.shPassword-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.
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.
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.
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.
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.
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.
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
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).
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.
Example: https://example.com/path/to/kbi_schema.json
logging.level.io.mosip.esignet=INFOAudit 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 secondssbi.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 validationlinked-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
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.
OAuth Details API is initiating the transaction despite a mismatch between the aud claim in the provided ID token and the clientId
IDT based authentication is successful on using reused challenge.
The system is not checking for an available slot every “6” seconds, for a max of “10” time while the loading screen is displaying
Individual ID is not validated with IDT auth factor
esignet
esignet-signup
esignet-mock-services
esignet-plugins
mosip-onboarding
IDA
1.2.1.0
ID Repository
1.2.1.0
Kernel
1.2.0.1
Sunbird
v2.0.0-rc3
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

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

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.
./install-prereq.sheSignet 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.
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.
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.
Prefix & Postfix support for Choice of Login ID
Customizable Client Configuration
Purpose-Based eSignet UI
Deployment Script Update
Library Upgrades for Vulnerability Fixes:
Dependencies in eSignet service have been upgraded to fix known vulnerabilities.
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.
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.
esignet
esignet-signup
esignet-mock-services
esignet-plugins
eSignet with MOSIP compatibility matrix
ID Authentication
PMS
eSignet with Sunbird compatibility matrix
Sunbird
Signup with MOSIP compatibility matrix
ID Repository
Keymanager
PMS
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
Property to configure additional config schema
mosip.esignet.additional-config.schema.url
Please refer here for details.
Property to configure the url to fetch the schema of additional config
mosip.mock.ui-spec.schema.url
Please refer here for details.
New column: additional_config of type jsonb added to the client_detail table for storing flexible JSON configuration data.
Increased length of name column in the client_detail table to 600 characters to support longer client names.
Please refer here for details.
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.
API Documentation
Integration Guides
End User Guides
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.
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.
Verification is performed on various configurations as mentioned below
Default configuration - with 7 Languages (English/Khmer/Hindi/Kannada/Tamil/Arabic/French)
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
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.
2928
2785
97
46
Test Rate: 98% with Pass rate: 96%
Here is the detailed breakdown:
API Based Testing - eSignet:
1934
1829
79
26
UI Based Testing:
994
956
18
20
API Based Testrig - eSignet:
813
445
0
0
368
API Based Testrig - eSignet-signup:
554
516
34
4
0
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
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
Browser Compatibility for desktop and mobile:
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
eSignet
release-1.5.x
v1.5.0
86.8%
0
0
0
Q1
Password based authentication
Completed
Q1
Unified Login Portal, Inclusion of custom handle - Phone number
Completed
Q2
Support for Sunbird Integration
Knowledge based Identification
Completed
Q2
Configuration capability for Knowledge based Identification
Authenticator plugin Implementation for KBI and VC issuance plugin implementation
Regex validations implementation for KBI
Release Number: v1.7.0
Release Date: 2nd December, 2025
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
Q3
Profile Management
Conduct e-KYC on registered users, capability to confirm user identity through additional details.
Completed
Q3 - Q4
eSignet Java 21 migration changes
Moved to 2025
v1.4.3
Q3 - Q4
L1 performance fixes
eSignet deployment fixes
Moved to 2025
v1.4.2
Q4
Support for identity brokering
It is capable of integrating with multiple ID providers for unified user authentication.
Moved to 2025
v1.6.0
Q1-Q4
Re-consent
Renew user consent for updates and modifications.
Moved to 2025
Q1-Q4
UI enhancements
Dynamic UI pages tailored to specific use cases- Verify / Link / Login.
Moved to 2025
Q1-Q4
Revamped QR code / wallet-based login using OpenID4VP & SIOP v2 for a secure and streamlined authentication experience.
Moved to 2025
Q1-Q4
Revocation of VC
New ability to invalidate and manage credentials for security purposes.
Moved to 2025
Q1-Q4
Support for Key Manager - EDD and EC signature.
Moved to 2025
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
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
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
Q1-Q4
Consent Management
End user can view, manage, and edit consented user information.
Moved to 2025
Q1-Q4
Support for Client-Initiated Backchannel Authentication (CIBA).
Moved to 2025
Q1-Q4
Support for WebAuthN API.
Moved to 2025
Q1-Q4
Support for 2-Factor authentication (2FA).
Moved to 2025
Q1-Q4
Support for Token Introspection.
Moved to 2025
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%

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.
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.
The KBI authentication UI is now also fully dynamic and powered by the same schema-based JSON form builder, enhancing consistency and maintainability.
Deployment scripts for the eSignet service have been refined to simplify setup, reduce configuration overhead, and ensure smoother deployments across environments.
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.
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.
Please refer here for full list of known issues.
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.
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.
esignet
esignet-signup
esignet-mock-services
esignet-plugins
PMS
IDA
1.3.x (for identity assurance 1.0 support)
Sunbird
ID Repository
1.3.x (for identity assurance 1.0 support)
otpmanager
kernel-notification-service
auditmanager
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
API Documentation
Integration Guides
End User Guides
Linux : Docker Compose fails to start containers — “failed to extract layer” error.
eSignet-MOSIP: User is unable to complete eKYC verification in MOSIP-ID plugin.
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.
In mock : KBI Login is not working.
eSignet-MOCK: fetchUserInfo fails with error "Failed to get the User Info." when DPoP and PAR are disabled.
eSignet-MOSIP-ID: User is unable to register in signup-mosipid-qabase.
JWKS.json returning incorrect userinfo signing certificate.
Sender constrained tokens using DPOP for FAPI 2.0 security profile compliance.
Enhance KBI form in eSignet UI.
Registration form on the eSignet sign-up page should dynamically adjust its fields and layout based on a predefined UI schema.
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.
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.
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)
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)
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.
3183
3110
38
35
Test Rate: 98% with Pass rate: 98%
Here is the detailed breakdown:
API Based Testing - eSignet
2017
Passed
1962
Failed
20
Skipped
35
API Testrig results for eSignet and Signup with Mock ID:
API Based Testrig - eSignet
Total
1011
Passed
93
Failed
0
Skipped
0
API Testrig results for eSignet and Signup with MOSIP ID:
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.
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
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%
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.
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.
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
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.
Test Rate: 98% with Pass rate: 98%
Here is the detailed breakdown:
Note: 525 test cases related to the MOSIP ID plug-in are currently being ignored.
Note: 186 test cases related to the mock plug-in are currently being ignored.
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
Refer to the github link for more on reports .
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.
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 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
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

0%
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: -
Configuring labels
Multiple input type support
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
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.
Support for "resource" parameter in the authorization request
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
OIDC Provider verification
Wallet based verification - Web wallet/phone wallet
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
🟢 Completed
Q2
Performance fixes for the eSignet service using Mock IDA
🟢 Completed
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.
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.
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)
Signup Portal with mock ID
Login with Password with mock ID
Forgot Password with mock ID
Login with OTP and biometrics with mock ID
Deployment testing on MOSIPID and Sunbird
UI Automation for Signup
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.
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:
API Testrig results for eSignet and Signup with Mock ID:
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:
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:
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:
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 .
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%

eSignet Signup
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).
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.
: Provides an overview of the eSignet stack + ID System, deployment scenarios, required skill sets and system architecture.
: Outlines infrastructure details, hardware/software/network requirements, and initial setup steps.
: 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.
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.
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.
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.
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)
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.
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.
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
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.
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.
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.
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.
Once steps mentioned above are complete and you have verified access, proceed with the deployment scripts as explained below.
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.
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 running the install-prereq.sh script, you need to prepare the esignet-global configmap, which contains environment-specific configuration for eSignet.
Copy the sample configmap file:
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:
The esignet-global-cm.yaml file typically contains domain names, API endpoints, and other parameters required for eSignet to function in your environment.
eSignet namespace is also created if it does not exist already.
Once the configmap is updated, proceed with the prerequisite installation.
./install-prereq.sh scriptRun 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:
n - If you already have hsm installed
s - If you want to install softhsm
p - If you want to use pkcs12 based key management from mounted file
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:
n - "Warning! You have chosen to skip the keycloak initialization. The internal APIs of eSignet will run without access control."
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:
n - If you already have kafka deployed 1. ["kafkaurl"] = "Please provide the kafka url: spring.kafka.bootstrap-servers"
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:
y - If you want to install postgres
n - If you already have a postgres server deployed
["postgreshostname"] = "Please provide the hostname for the postgres server:"
["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:
y - If you want to install redis
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:
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.
["postgres"] = "eSignet database was not found. Running the db scripts to create and initialize the eSignet database:"
Information to be added in the guide for the IAM scope in the deployment guide.
In the deployment script, certificate endpoint, binding endpoint and client management endpoint are to be configured as internal.
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.
eSignet Mock Plugin – Simulates an identity provider for testing and development; no real ID system integration required.
MOSIP Identity Plugin – Integrates eSignet with an existing MOSIP identity system.
Sunbird RC Plugin – Connects eSignet to an existing Sunbird RC identity registry.
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.
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.
esignetplugin = Choose the required plugin to proceed with installation.
esignet-mock-plugin
mosip-identity-plugin
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:
["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: "
["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: "
["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:
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:
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:
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"
defaultlang = Please choose the default lang for esignet. Please press enter for en
idprovidername = Please provide the name for eSignet: (Note: This name will be used instead of eSignet on the login page and in other places)"
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.
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.
Refer to the for detailed steps on how to onboard relying parties.
You can check the status of eSignet pods after deployment, use the following command:
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.
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.
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.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 1.1.x
1.5.x
1.2.x
Legacy
Legacy MOSIP
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.
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.
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.
: 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.
Ensure all required hardware and software dependencies are prepared before proceeding with the installation.
Virtual Machines (VMs) can use any operating system as per convenience.
For this installation guide, Ubuntu OS is referenced throughout.
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:
As only secured https connections are allowed via nginx server will need below mentioned valid ssl certificates:
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.
Follow the steps mentioned to install the required tools on your personal computer to create and manage the k8 cluster using RKE1.
Below is a step-by-step guide to set up and configure the required components for secure and efficient operations.
Secure access solution that establishes private channels to Observation and eSignet clusters.
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.
Create a Wireguard server VM with above mentioned Hardware and Network requirements.
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
execute docker.yml command to install docker and add the user to the docker group:
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:
Install the on your PC.
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.
Start the wireguard client and check the status:
Once connected to wireguard, you should be now able to login using private IPs.
Install all the required tools mentioned in the prerequisites for the PC.
.
.
.
rke (version 1.3.10)
Set up Observation Cluster node VMs as per the hardware and network requirements mentioned above.
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
Set up the observation cluster by following the steps given .
Once cluster setup is completed, setup k8's cluster ingress and storage class following .
Once the Observation K8 cluster is created and configured set up the nginx server for the same using the .
Once the Nginx server for observation place is done continue with the .
Install Keycloak.
Install Rancher UI.
keycloak & Rancher UI Integration.
Set up on your personal computer.
Clone the Kubernetes Infrastructure Repository:
Create a copy of hosts.ini.sample as hosts.ini. Update the IP addresses.
Execute to open all the required ports.
Install on all the required VMs.
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.
Set up for exposing services from the newly created eSignet K8 cluster.
Clone the eSignet repository: (select tag based upon the compatibility matrix)
Install for eSignet from the deploy directory.
for eSignet services.
Install eSignet and OIDC .
eSignet as per the plugin used for deployment.
Setup for detailed automated testcase execution.
Clone the respective repo: (select tag based upon the compatibility matrix)
Install for eSignet mock services.
Install services.
Onboard services.
Clone the respective repo: (select tag based upon the compatibility matrix)
Install for eSignet Signup services.
Install services.
Deploy dependencies for eSignet signup onboarder following .
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/deploycp esignet-global-cm.yaml.sample esignet-global-cm.yaml./install-prereq.sh2. ["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.shkubectl get pods -n esignetReverse Proxy
CDN/Cache management
Load balancing
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.
mock-relying-party-uieSignet-signup: Services required for esignet-signup-service and esignet-signup-ui deployment.
mock-relying-party-servicemock-relying-party-uiOnboarding 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.
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>
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

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)
ansible-playbook -i hosts.ini docker.yamlmkdir -p wireguard/configsudo 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/wireguardsudo systemctl start wg-quick@wg0
sudo systemctl status wg-quick@wg0git clone -b v1.2.0.2 https://github.com/mosip/k8s-infra.git
cd k8s-infra/mosip/onpremgit clone -b <tag> https://github.com/mosip/esignet.git
cd esignetcd deploygit clone -b <tag> https://github.com/mosip/esignet-mock-services.git
cd esignet-mock-servicesgit clone -b <tag> https://github.com/mosip/esignet-signup.git
cd esignet-signuppeer1 : peername
peer2 : xyzThis guide provides a step-by-step approach for developers who want to integrate their application as a Relying Party (RP) with eSignet.
Before integrating your Relying Party application with eSignet, ensure the following are in place:
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.
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 %}
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.
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.
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 %}
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.
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/
https://<eSignet-domain>/plugins/sign-in-button-plugin.jsopenapi: 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: bx55bzakduy97openapi: 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]"
}