- 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.
esignet-globalconfigmap: For eSignet K8's env,esignet-globalconfigmap inesignetnamespace contains Domain related information. Follow below steps to add domain details foresignet-globalconfigmap.- Copy
esignet-global-cm.yaml.sampletoesignet-global-cm.yaml.cp esignet-global-cm.yaml.sample esignet-global-cm.yaml - Update the domain names in
esignet-global-cm.yamlcorrectly for your environment. - Create a google recaptcha v2 ("I am not a Robot") from Google with required domain name ex:[sandbox.mosip.net] Recaptcha Admin and set esignet captcha.
- External IAM scope:
- If using an external IAM, copy the secrets from the external IAM and create a secret named keycloak-client-secrets in the esignet namespace.
- Copy
./install-prereq.sh
-
Update values file for postgres init here.
- If you are creating a new database, you can choose the database name, user, and connection details as per your requirement in
init_values.yaml:dbName: mosip_esignet # customize e.g. mosip_esignet02 dbUser: esignetuser # customize e.g. esignetuser02 host: "postgres-postgresql.postgres" port: 5432
- If you are fine with the default database name, you don't need to edit anything - simply proceed to execute the script as-is.
- Important: If you edit
init_values.yamlin thepostgresdirectory (e.g. changingdbNameordbUser), you must also update the corresponding values inpostgres-config.yamlin the samepostgresdirectory to keep them in sync - otherwise the esignet service will fail to connect to the correct database/user.
- If you are creating a new database, you can choose the database name, user, and connection details as per your requirement in
-
Execute
initialise-prereq.shscript to initialise postgres and keycloak../initialise-prereq.sh
./install-esignet.sh
You'll be asked which plugin to use:
- mock — no external identity system needed, good for local/dev.
- mosip — connects to a MOSIP IDA instance. Onboarding runs automatically afterwards.
- sunbird — connects to a Sunbird registry.
Plugins 2 and 3 also ask which HSM to use — pick SoftHSM unless you have real hardware HSM set up (that path isn't supported by this script yet). Then you'll set a theme, language, and display name for the OIDC UI.
Note: When deploying multiple plugins in the same cluster, a few manual changes are required in the deployment scripts:
- Create a new database for the plugin from the
db_scriptsdirectory:- Update dbName, dbUser, host, and port in
init_values.yamlaccording to the plugin being deployed. - Run the
init_db.shscript from thedb_scriptsdirectory to create the database../init_db.sh
- Update dbName, dbUser, host, and port in
- Update the namespace and mosip-esignet-host domain in the
esignet-global.yamlscripts according to the plugin being deployed. - Update the namespace, esignet service name, and SoftHSM name in the
esignetdirectory'sinstall.shscript according to the plugin being deployed. - Update the namespace and service name in the
oidc-uidirectory'sinstall.shscript according to the plugin being deployed. - Update the namespace and esignet service name in the
partner-onboarderinstall script if these values are changed for themosip identity plugin.- Example: Sunbird Plugin Deployment
- namespace: esignet-sunbird
- mosip-esignet-host: esignet-sunbird.sandbox.mosip.net
- esignet service name: esignet-sunbird
- oidc service name: oidc-ui-sunbird
- Example: Sunbird Plugin Deployment
- Before proceeding with the Onboarding steps, please ensure that the Mock Relying Party services are deployed and running.
- Deployment of the mock Relying Party portal is optional if you already have your own Relying Party portal.
- You can refer to the default mock relying party implementation here:
- Once the Relying Party is deployed, proceed with the onboarding.
- 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
- redirect-uri
- client-name
- client-id
- 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-keyfrom the eSignet-with-mock Postman environment, as shown in the image below:
This deployment is limited to mock Below section 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.
esignet-apitestrig will test the APIs and the end-to-end functional flow of the eSignet modules. esignet-apitestrig
To completely remove eSignet from your Kubernetes environment, run the following commands.
./delete-all.sh
