I have a setup with 3 docker containers: one client, one server and one nginx to set the ssl certificate and route trafic coming on https://server.xxxxx to the solid server and https://client.xxxxx to the solid client.
I used this example setup: Redirecting…
Everything seems to work, I can reach my solid client and login, I can reach my solid server and create a pod, but when I want to get data or store data, I get the following error in the server log:
warn: Error verifying WebID via DPoP-bound access token: The WebID could not be dereferenced.
solid-server_1 | Actual: https://server.xxxxxx/frederik/profile/card#me
solid-server_1 | Expected: A dereferenceable resource
What does this exactly mean? I’m guessing something wrong with in the nginx config?
The problem was that I was using a self signed certificate via nginx reverse proxy. It has been a bit of work to get a hold of the real error, because the logging of the solid server doesn’t give enough detail even with debug loggin . I added some extra logging to get the stack trace and then I noticed:
solid-server_1 | Expected: A dereferenceable resource
solid-server_1 | at dereferenceWebid (/community-server/node_modules/@solid/access-token-verifier/dist/algorithm/retrieveWebidTrustedOidcIssuers.js:15:15)
solid-server_1 | at processTicksAndRejections (node:internal/process/task_queues:96:5)
solid-server_1 | at async retrieveWebidTrustedOidcIssuers (/community-server/node_modules/@solid/access-token-verifier/dist/algorithm/retrieveWebidTrustedOidcIssuers.js:22:24)
solid-server_1 | at async WebIDIssuersCache.getIssuers (/community-server/node_modules/@solid/access-token-verifier/dist/class/WebIDIssuersCache.js:17:34)
solid-server_1 | at async verifySolidAccessToken (/community-server/node_modules/@solid/access-token-verifier/dist/algorithm/verifySolidAccessToken.js:39:21)
solid-server_1 | at async DPoPWebIdExtractor.handle (/community-server/dist/authentication/DPoPWebIdExtractor.js:47:28)
solid-server_1 | at async Promise.all (index 0)
solid-server_1 | at async UnionCredentialsExtractor.handleSafe (/community-server/dist/util/handlers/UnionHandler.js:56:25)
solid-server_1 | at async AuthorizingHttpHandler.handle (/community-server/dist/server/AuthorizingHttpHandler.js:27:29)
solid-server_1 | at async ParsingHttpHandler.handle (/community-server/dist/server/ParsingHttpHandler.js:28:22)
solid-server_1 | at async SequenceHandler.handle (/community-server/dist/util/handlers/SequenceHandler.js:27:26)
solid-server_1 | at async Server.<anonymous> (/community-server/dist/server/BaseHttpServerFactory.js:33:17)
FetchError: request to https://server.xxxxxxxxxxxxxxx/profile/card#me failed, reason: self signed certificate
at ClientRequest.<anonymous> (XXXXXXXXXXXXXXXXXXX\npm\node_modules\rdf-dereference\node_modules\node-fetch\lib\index.js:1461:11)
at ClientRequest.emit (events.js:400:28)
at TLSSocket.socketErrorListener (_http_client.js:475:9)
at TLSSocket.emit (events.js:400:28)
at emitErrorNT (internal/streams/destroy.js:106:8)
at emitErrorCloseNT (internal/streams/destroy.js:74:3)
at processTicksAndRejections (internal/process/task_queues.js:82:21) {
type: 'system',
errno: 'DEPTH_ZERO_SELF_SIGNED_CERT',
code: 'DEPTH_ZERO_SELF_SIGNED_CERT'
Hello everybody,
We are facing the same issue. When trying to interact with the server, we can create a pod (through the registration page) and get a specific card through a GET request. However, we cannot do a PUT to our own pods. The error is:
warn: Error verifying WebID via DPoP-bound access token: The WebID could not be dereferenced.
Actual: https://solid.domain.xx/kim-test/profile/card#me
Our setup is the following: we are running the community server with NodeJS, we use nginx as a reverse proxy, and we are not signing our own certificate (we use cerbot for this).
On the client side, we get a token, a public and a private key, but still the authorization request fails.
Would you have any pointers to solve this issue? thanks a lot!
hello,
Can anyone solve this problem? I have the same error. I’m running in a local network environment and have set up the CSS in a Docker container, configured an Nginx reverse proxy, and used an OpenSSL self-signed certificate.