Skip to content
This repository was archived by the owner on Jan 13, 2026. It is now read-only.
This repository was archived by the owner on Jan 13, 2026. It is now read-only.

Identity provider side error #1

@entrustgabri

Description

@entrustgabri

Hi, I have been trying to run the demo, with the IDP kit docker version, and haven't been able to successfully do so. I have encountered two errors, one of which I was able to solve.

The first problem I had was when running the nextjs client, when I clicked at "Sign in with NFT" button, it redirected me to localhost:6000, and the identity provider is configured to run at localhost:8080 in the tutorials, so I got a can't be reached error. The only thing I had to do to solve this was changing the externalUrl variable in /src/main/kotlin/.../config/IDPConfig.kt .

Having changed that, I am able to get to the "Connect wallet" page, select Metamask, and sign the message. Unfortunately, after that I get a blank page with the text "Internal server error", and the following error message in the identity provider's terminal:

[JettyServerThreadPool-41] WARN io.javalin.Javalin - Uncaught exception
com.sksamuel.hoplite.ConfigException: Error loading config because:

    - Could not instantiate 'id.walt.nftkit.services.ChainConfig' because:

        - 'providers': Missing from config

        - 'privateKey': Missing from config
	at com.sksamuel.hoplite.ConfigLoader$returnOrThrow$1.invoke(ConfigLoader.kt:215)
	at com.sksamuel.hoplite.ConfigLoader$returnOrThrow$1.invoke(ConfigLoader.kt:212)
	at com.sksamuel.hoplite.fp.ValidatedKt.getOrElse(Validated.kt:115)
	at com.sksamuel.hoplite.ConfigLoader.returnOrThrow(ConfigLoader.kt:212)
	at id.walt.nftkit.services.WaltIdServices.loadChainConfig(WaltIdServices.kt:81)
	at id.walt.nftkit.utilis.providers.GoerliWeb3.getWeb3j(GoerliWeb3.kt:9)
	at id.walt.nftkit.chains.evm.erc721.Erc721TokenStandard.loadContract(Erc721TokenStandard.kt:272)
	at id.walt.nftkit.chains.evm.erc721.Erc721TokenStandard.loadContract$default(Erc721TokenStandard.kt:271)
	at id.walt.nftkit.chains.evm.erc721.Erc721TokenStandard.supportsInterface(Erc721TokenStandard.kt:174)
	at id.walt.nftkit.services.NftService.isErc721Standard(NftService.kt:520)
	at id.walt.nftkit.services.NftService.balanceOf(NftService.kt:293)
	at id.walt.idp.nfts.NFTManager.nftCollectionOwnershipVerification(NFTManager.kt:70)
	at id.walt.idp.nfts.NFTManager.verifyNftOwnershipResponse(NFTManager.kt:22)
	at id.walt.idp.nfts.NFTController.nftVerification(NFTController.kt:62)
	at id.walt.idp.nfts.NFTController$routes$1$2.invoke(NFTController.kt:34)
	at id.walt.idp.nfts.NFTController$routes$1$2.invoke(NFTController.kt:34)
	at io.javalin.plugin.openapi.dsl.OpenApiBuilder.documented$lambda-0(OpenApiBuilder.kt:23)
	at io.javalin.plugin.openapi.dsl.DocumentedHandler.handle(DocumentedHandler.kt:10)
	at id.walt.idp.rest.IDPAccessManager.manage(IDPAccessManager.kt:22)
	at io.javalin.http.JavalinServlet.addHandler$lambda-0(JavalinServlet.kt:96)
	at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43)
	at io.javalin.http.JavalinServlet$lifecycle$2$1$1.invoke(JavalinServlet.kt:43)
	at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:99)
	at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85)
	at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
	at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2341)
	at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85)
	at io.javalin.http.JavalinServletHandler.executeNextTask$lambda-11$lambda-10(JavalinServletHandler.kt:119)
	at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:684)
	at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662)
	at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2200)
	at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:119)
	at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85)
	at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
	at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2341)
	at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85)
	at io.javalin.http.JavalinServletHandler.executeNextTask$lambda-11$lambda-10(JavalinServletHandler.kt:119)
	at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:684)
	at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662)
	at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2200)
	at io.javalin.http.JavalinServletHandler.executeNextTask(JavalinServletHandler.kt:119)
	at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$lambda-1(JavalinServletHandler.kt:85)
	at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
	at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2341)
	at io.javalin.http.JavalinServletHandler.queueNextTaskOrFinish$javalin(JavalinServletHandler.kt:85)
	at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:89)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at io.javalin.jetty.JavalinJettyServlet.service(JavalinJettyServlet.kt:58)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:554)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
	at io.javalin.jetty.JettyServer$start$wsAndHttpHandler$1.doHandle(JettyServer.kt:52)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:181)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at org.eclipse.jetty.server.Server.handle(Server.java:516)
	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
	at java.base/java.lang.Thread.run(Thread.java:1589)

The URL where I get the message: http://localhost:8080/api/nft/callback?session=1558f76f-342f-4f0f-8601-2bf271b9de41&message=localhost%3A8080%20wants%20you%20to%20sign%20in%20with%20your%20Ethereum%20account%3A%0A0x7c55a0a214f49adBf56975b3942bA173372e035F%0ASign%20in%20with%20Ethereum%20to%20the%20app.%0AURI%3A%20http%3A%2F%2Flocalhost%3A8080%0AVersion%3A%201%0AChain%20ID%3A%201%0ANonce%3A%20bd4a5a0f-b7d7-4afb-8f1e-f55b62753d2d&signature=0xad14c17e51982b9a47cbf99d88b981a5ef331858485f91e7993768f767c8b1aa358701bdba7b1ee61c40f57646d06093a81d055542d72afa9731cc416de89ddd1b

And my walt.yaml configuration file:

hikariDataSource:
  jdbcUrl: jdbc:sqlite:data/walt.db
  maximumPoolSize: 5
  autoCommit: false
  dataSource:
    journalMode: WAL
    fullColumnNames: false

azureKeyVaultConfig:
  baseURL:
  id:
  secret:

providers:
  goerli: "myAlchemyGoerliEndpoint

privateKey: "bd4cb3e507f342ee3a710370cef39dda48f17b0a158b0b8dddf000fbd5b2c2d9"


apiKeys:
  ethereumBlockExplorer: ""
  polygonBlockExplorer: ""
  alchemy: "myAlchemyApiKey"
  nftstorage: ""

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions