Pre-registration login

Hello,

I have an issue by authenticate usign otpWithCaptcha API of preregistration-application-service, this error not appears if i set mosip.preregistration.captcha.enable=false ( there is another issue after send otp for validation):

2023-01-04 09:11:43,177 [http-nio-9090-exec-2] INFO [i.m.k.l.l.i.Slf4jLoggerImpl].info.57 : In fetchTemplate of NotificationServiceUtil for templateName OTP-email-subject-template
2023-01-04 09:12:16,763 [HikariPool-1 housekeeper] WARN [c.z.h.p.HikariPool$HouseKeeper].run.758 : HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=51s719ms849µs400ns).
2023-01-04 09:17:32,046 [http-nio-9090-exec-2] ERROR [i.m.k.a.d.h.ValidateTokenHelper].doOnlineTokenValidation.266 : Token validation failed for accessToken eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ5Tld1WjhrbjRfeXNhX0NqWFNtUzhfdXRTTWpsbEdvN3FUOU9hUkhqTmZZIn0.eyJqdGkiOiJhMmE2NWZkNi0zNGNiLTRmODktOTFhNi0wNjlkYTk4MmNiZTQiLCJleHAiOjE2NzI4Mjc4NDYsIm5iZiI6MCwiaWF0IjoxNjcyODI3NTQ2LCJpc3MiOiJodHRwOi8vMTAuODcuMTA1LjE0MC9hdXRoL3JlYWxtcy9tb3NpcCIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiJjMWI1MWI3Yi1hYzcwLTRhMjEtODYyZC02Y2QxOTEwNTIzNzgiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJtb3NpcC1wcmVyZWctY2xpZW50IiwiYXV0aF90aW1lIjowLCJzZXNzaW9uX3N0YXRlIjoiZjJmODYxZDctZmJlMy00YzljLTg3MjQtYjQ2NzAxZWEyM2IyIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyIqIl0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJSRUdJU1RSQVRJT05fT0ZGSUNFUiIsIlJFU0lERU5UIiwiUkVHSVNUUkFUSU9OX1BST0NFU1NPUiIsIkNFTlRSQUxfQURNSU4iLCJSRUdJU1RSQVRJT05fQURNSU4iLCJQUkVfUkVHSVNUUkFUSU9OIiwiWk9OQUxfQURNSU4iLCJSRUdJU1RSQVRJT05fU1VQRVJWSVNPUiIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iLCJHTE9CQUxfQURNSU4iLCJIT1RMSVNUX0FETUlOIiwiSU5ESVZJRFVBTCJdfSwicmVzb3VyY2VfYWNjZXNzIjp7Im1vc2lwLXByZXJlZy1jbGllbnQiOnsicm9sZXMiOlsidW1hX3Byb3RlY3Rpb24iXX0sImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiY2xpZW50SWQiOiJtb3NpcC1wcmVyZWctY2xpZW50IiwiY2xpZW50SG9zdCI6IjEwLjg3LjEwNS4xNDEiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJzZXJ2aWNlLWFjY291bnQtbW9zaXAtcHJlcmVnLWNsaWVudCIsImNsaWVudEFkZHJlc3MiOiIxMC44Ny4xMDUuMTQxIiwiZW1haWwiOiJzZXJ2aWNlLWFjY291bnQtbW9zaXAtcHJlcmVnLWNsaWVudEBwbGFjZWhvbGRlci5vcmcifQ.EEQPr3cZNQdVf4sMT0UO1U3zjBC0lFyP-H3nv5AQZJtAvuDaonhZmebiwPxBPD4Nya0U7cMOmXJqiSp49BzcP_RAIVQJ7uHHW-TZ_ffXF-X-TwDyQACShPOEXXPs_XZ8zCRbPAzI63mgDmITdj2JtPWV1apTU1gjjWVY_p1YoWsQSIuSPiQYv7vhKuVfV4quAZKwE5PvImogJGnsNTStHiIAF4kFH4fhT3la6e8JId9yVfl_A2N41jNlsj0J4hgS-djhgdXmBZajd4ucya1f3T1vSR2RvFtaROibY6Pm70arczI53CNnmGE2d–V59F74IaQXUvbK8K894UUNys-Rw
org.springframework.web.client.HttpClientErrorException: 401 Unauthorized
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:79)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:766)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:724)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:680)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:600)
at io.mosip.kernel.auth.defaultadapter.helper.ValidateTokenHelper.doOnlineTokenValidation(ValidateTokenHelper.java:264)
at io.mosip.kernel.auth.defaultadapter.helper.TokenValidationHelper.doOnlineTokenValidation(TokenValidationHelper.java:49)
at io.mosip.kernel.auth.defaultadapter.helper.TokenValidationHelper.getOnlineTokenValidatedUserResponse(TokenValidationHelper.java:45)
at io.mosip.kernel.auth.defaultadapter.config.SelfTokenRestInterceptor.isTokenValid(SelfTokenRestInterceptor.java:104)
at io.mosip.kernel.auth.defaultadapter.config.SelfTokenRestInterceptor.intercept(SelfTokenRestInterceptor.java:85)
at org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:92)
at brave.spring.web.TracingClientHttpRequestInterceptor.intercept(TracingClientHttpRequestInterceptor.java:53)
at org.springframework.cloud.sleuth.instrument.web.client.LazyTracingClientHttpRequestInterceptor.intercept(TraceWebClientAutoConfiguration.java:293)
at org.springframework.http.client.InterceptingClientHttpRequest$InterceptingRequestExecution.execute(InterceptingClientHttpRequest.java:92)
at org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:76)
at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48)
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:723)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:680)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:600)
at io.mosip.preregistration.application.service.util.NotificationServiceUtil.fetchTemplate(NotificationServiceUtil.java:353)
at io.mosip.preregistration.application.service.util.NotificationServiceUtil.applyTemplate(NotificationServiceUtil.java:318)
at io.mosip.preregistration.application.service.util.NotificationServiceUtil.invokeEmailNotification(NotificationServiceUtil.java:209)
at io.mosip.preregistration.application.service.OTPManager.sendOtp(OTPManager.java:170)
at io.mosip.preregistration.application.service.LoginService.sendOTP(LoginService.java:151)
at io.mosip.preregistration.application.service.LoginService.validateCaptchaAndSendOtp(LoginService.java:215)
at io.mosip.preregistration.application.service.LoginService$$FastClassBySpringCGLIB$$bcde9573.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684)
at io.mosip.preregistration.application.service.LoginService$$EnhancerBySpringCGLIB$$941d85d1.validateCaptchaAndSendOtp()
at io.mosip.preregistration.application.controller.LoginController.sendOtpWithCaptcha(LoginController.java:259)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at ch.qos.logback.classic.helpers.MDCInsertingServletFilter.doFilter(MDCInsertingServletFilter.java:49)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:158)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:126)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:111)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:84)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.cloud.sleuth.instrument.web.ExceptionLoggingFilter.doFilter(ExceptionLoggingFilter.java:48)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at brave.servlet.TracingFilter.doFilter(TracingFilter.java:86)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
at io.mosip.kernel.core.logger.config.SleuthValve.invoke(SleuthValve.java:36)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:615)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1627)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:829)

Hello

I am not clear how you are invoking the endpoint with captcha enabled from swagger/postman.
The endpoint ‘/login/sendOtpWithCaptcha’ is used from UI since captcha can be entered from UI. From swagger /postman it is not possible to add the captcha token.
Instead you can use the endpoint ‘/login​/sendOtp​/langcode’ to generate otp.

Hope this helps.

1 Like

Thanks @mayuradesh for the repley,

yes it on UI the test its the same issue on Pre-registration UI invalidate token! - #6 by mayuradesh

@bch can you share the information thats asked by @mayuradesh ?

1 Like

@gsasikumar @mayuradesh Thank you for your reply, the issue is solved.
The ui is exposed using http, then we should use https to allow setCookie ( to add token before otp validation )

1 Like

@bch Glad you found the problem. Yes secure by default has been our working model. HTTPS is a must for our service.

1 Like

Hello community how is authentication usign otp WithCaptcha of preregistration-application problem being addressed. currently am unable to see the captcha at

Hello Community,
Any help with this?

Hello,

We apologize for any inconvenience you’re experiencing with the authentication using OTP with Captcha in the Pre-registration Application.

To address this problem, our technical team is actively investigating the issue. We understand the importance of a seamless user experience, and we are working diligently to ensure that the Captcha functionality is properly integrated for authentication.

We appreciate your patience as we work to resolve this matter.

For now, you can refer to this given below:

Pre-registration Captcha service : https://{env}/preregistration/v1/captcha/swagger-ui.html

Pre-Registration-captcha

You must invoke the endpoint with a captcha enabled from Swagger/postman.
The endpoint ‘/login/sendOtpWithCaptcha’ is used from UI since the captcha can be entered from UI. From Swagger/postman it is not possible to add the captcha token.
Instead, you can use the endpoint ‘/login​/sendOtp​/langcode’ to generate OTP.

Best Regards,
Team MOSIP

Hello @sanchi-singh24
In my case captcha enable is set to false and yet i still cant have the OTP delivered.

2023-08-31 12:52:39,822 [http-nio-9090-exec-6] INFO [i.m.k.l.l.i.Slf4jLoggerImpl].info.32 : sessionId - idType - id - In callAuditManager method of AugitLogUtil service - AuditRequestDto(eventId=PRE_405, eventName=EXCEPTION, eventType=SYSTEM, actionTimeStamp=2023-08-31T12:52:39.822484, hostName=prereg-application-5678cc76d9-pvsfp, hostIp=10.42.2.124, applicationId=MOSIP_1, applicationName=PREREGISTRATION, sessionUserId=cliveb@gmail.com, sessionUserName=cliveb@gmail.com, id=NO_ID, idType=PRE_REGISTRATION_ID, createdBy=SYSTEM, moduleName=AUTHENTICATION_SERVICE, moduleId=AUTHENTICATION, description=Otp fail to send)
2023-08-31 12:52:39,823 [http-nio-9090-exec-6] INFO [i.m.k.l.l.i.Slf4jLoggerImpl].info.32 : sessionId - idType - id - In callAuditManager method of AugitLogUtil service auditUrl: http://auditmanager.kernel/v1/auditmanager/audits
2023-08-31 12:52:39,854 [http-nio-9090-exec-6] ERROR [i.m.k.l.l.i.Slf4jLoggerImpl].error.92 : In validateCaptchaAndSendOtp method of login service-

1 Like

Hello @sanchi-singh24
Any help on this?

Hi @mazboko

Can you please provide the full logs as we are not able to see the exact error and also can you provide the API error response.

Please check if the pre-reg config properties are set correct: Pre-reg default properties

Best regards,
Aiham
Team MOSIP

Hi @mazboko

Can you let us know the update on this? So we can guide you through this.

Best Regards,
Team MOSIP