walt-id / waltid-walletkit

Toolkit for SSI and NFT/SBT wallets
https://docs.walt.id
Apache License 2.0
31 stars 25 forks source link

Mock-Authentication returning error when run with docker-compose #19

Closed drellstab closed 2 years ago

drellstab commented 2 years ago

When I try to run all components of the web wallet demo locally using docker compose as shown in the docs, I get the following error when trying to log in to the web wallet (credentials can be anything, right?).

Using master#575d079d8191bc982b76435d63cb03d7c53d2f99 of this repo Ubuntu 18.04 Docker version 20.10.11, build dea9396 docker-compose version 1.26.2, build eefe0d31

Is this a misconfiguration on my end or is this a known probelm?

Thankful for any help

wallet-backend_1 | [JettyServerThreadPool-32] WARN io.javalin.Javalin - Uncaught exception wallet-backend_1 | com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException: Instantiation of [simple type, class id.walt.webwallet.backend.auth.UserInfo] value failed for JSON property id due to missing (therefore NULL) value for creator parameter id which is a non-nullable type wallet-backend_1 | at [Source: (String)"{}"; line: 1, column: 2] (through reference chain: id.walt.webwallet.backend.auth.UserInfo["id"]) wallet-backend_1 | at com.fasterxml.jackson.module.kotlin.KotlinValueInstantiator.createFromObjectWith(KotlinValueInstantiator.kt:121) wallet-backend_1 | at com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:202) wallet-backend_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:518) wallet-backend_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405) wallet-backend_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:351) wallet-backend_1 | at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:184) wallet-backend_1 | at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322) wallet-backend_1 | at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674) wallet-backend_1 | at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3629) wallet-backend_1 | at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3597) wallet-backend_1 | at io.javalin.plugin.json.JavalinJackson.fromJsonString(JavalinJackson.kt:37) wallet-backend_1 | at id.walt.webwallet.backend.rest.RestAPI$createJavalin$1$1$4.fromJsonString(RestAPI.kt:94) wallet-backend_1 | at io.javalin.http.Context.bodyAsClass(Context.kt:114) wallet-backend_1 | at id.walt.webwallet.backend.auth.AuthController.login(AuthController.kt:38) wallet-backend_1 | at id.walt.webwallet.backend.auth.AuthController$routes$1$1$3.invoke(AuthController.kt:23) wallet-backend_1 | at id.walt.webwallet.backend.auth.AuthController$routes$1$1$3.invoke(AuthController.kt:23) wallet-backend_1 | at io.javalin.plugin.openapi.dsl.OpenApiBuilder.documented$lambda-0(OpenApiBuilder.kt:23) wallet-backend_1 | at io.javalin.plugin.openapi.dsl.DocumentedHandler.handle(DocumentedHandler.kt:10) wallet-backend_1 | at id.walt.webwallet.backend.auth.JWTService.manage(JWTService.kt:51) wallet-backend_1 | at io.javalin.http.JavalinServlet.addHandler$lambda-5(JavalinServlet.kt:115) wallet-backend_1 | at io.javalin.http.JavalinServlet$service$tryBeforeAndEndpointHandlers$1.invoke(JavalinServlet.kt:44) wallet-backend_1 | at io.javalin.http.JavalinServlet$service$tryBeforeAndEndpointHandlers$1.invoke(JavalinServlet.kt:39) wallet-backend_1 | at io.javalin.http.JavalinServlet.service$tryWithExceptionMapper(JavalinServlet.kt:131) wallet-backend_1 | at io.javalin.http.JavalinServlet.service$tryBeforeAndEndpointHandlers(JavalinServlet.kt:39) wallet-backend_1 | at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:87) wallet-backend_1 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) wallet-backend_1 | at io.javalin.jetty.JavalinJettyServlet.service(JavalinJettyServlet.kt:58) wallet-backend_1 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) wallet-backend_1 | at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) wallet-backend_1 | at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550) wallet-backend_1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) wallet-backend_1 | at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)

severinstampler commented 2 years ago

please make sure you're running the latest versions of the container images, by using: docker-compose pull (which pulls all required images)

I tested it here, and it works fine.

drellstab commented 2 years ago

thanks for your help

I made sure that I used the latest versions of all containers, but sadly I still have the same result when I submit the login form on the web wallet (see error in original post).

Is it dependant on any environment variables (other than HOSTNAME) that might not be present on my system?

severinstampler commented 2 years ago

it's weird. Maybe open the dev console on the browser (F12) and inspect the request body in the network tab, for the login request. In the body there should be an object with an "id" and a "password" property. Can you confirm this?

drellstab commented 2 years ago

The request body is empty - this seems to be a client side issue.

I compared the console output errors on my local system with the output of the hosted demo (https://wallet.waltid.org/login) and I get the following errors on my local system when pressing the login button

Chrome: image

Firefox: image

The local instance is available via http (as suggested in the docs: http://myhostname/login) - whereas the hosted version is availble over https. Could that be a problem?

severinstampler commented 2 years ago

Yes I think it is a problem, due to: https://github.com/walt-id/waltid-web-wallet/issues/33 Do you open the web site using localhost as the hostname? If not, please try so, as the above mentioned issue suggests, the problem occurs when you're not using localhost to open the web site.

drellstab commented 2 years ago

I used the hostname to open the site, I misunderstood the instruction from the docs

[HOSTNAME] is your local computer name. Using localhost, not all features will work correctly.

to not use localhost as not all features would work.

When I use localhost to open the site it works.

Thanks for your help, I will close the issue.

severinstampler commented 2 years ago

no problem, it is true though, that some features with regards to the oidc flows, will not work using localhost. we should look into the problem with the crypto library on a non-https context eventually.