# Implementation of Webid-OIDC in Guile

**URL:** <https://forum.solidproject.org/t/implementation-of-webid-oidc-in-guile/4304>\
**Category:** General Discussion\
**Created:** [May 11, 2021, 10:30pm UTC](https://forum.solidproject.org/t/implementation-of-webid-oidc-in-guile/4304 "2021-05-11T22:30:18Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![vkraus](https://avatars.discourse-cdn.com/v4/letter/v/c5a1d2/32.png) [@vkraus](https://forum.solidproject.org/u/vkraus)\
**Post date:** [May 11, 2021, 10:30pm UTC](https://forum.solidproject.org/t/implementation-of-webid-oidc-in-guile/4304/1 "2021-05-11T22:30:18Z")

</div>

Dear all,

I am working to bring Solid to the GNU Guile programming language. I have finished the main parts of the webid-oidc authentication scheme.

I will now focus on the Web Access Control and Linked Data Platform parts.

I think Solid is a great opportunity to build user-respecting free software, because since it allows independent applications to be interoperable, it is easier to replace a proprietary application with a free one (see, [What is free software? - GNU Project - Free Software Foundation](https://www.gnu.org/philosophy/free-sw.html)). With its emphasis on linked data, it is also possible to steer away from mis-using a web browser (see, [The JavaScript Trap](https://www.gnu.org/philosophy/javascript-trap.html)).

(I know that the latter opinion is not widely shared among Solid developers, but it is important to me)

---

<div class="post-metadata">

**Author:** ![vkraus](https://avatars.discourse-cdn.com/v4/letter/v/c5a1d2/32.png) [@vkraus](https://forum.solidproject.org/u/vkraus)\
**Post date:** [May 11, 2021, 10:31pm UTC](https://forum.solidproject.org/t/implementation-of-webid-oidc-in-guile/4304/2 "2021-05-11T22:31:18Z")

</div>

The source code is available on my private server, [webid-oidc.git - Implementation in guile of the Solid webid-oidc spec.](https://labo.planete-kraus.eu/webid-oidc.git)  
It is somewhat documented, [https://webid-oidc.planete-kraus.eu/](https://webid-oidc.planete-kraus.eu/)

---

<div class="post-metadata">

**Author:** ![aschrijver](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/aschrijver/32/463_2.png) [@aschrijver](https://forum.solidproject.org/u/aschrijver)\
**Post date:** [May 12, 2021, 3:15am UTC](https://forum.solidproject.org/t/implementation-of-webid-oidc-in-guile/4304/3 "2021-05-12T03:15:16Z")

</div>

Lovely to behold a new language implementation and that following a true GPL-licensed FOSS approach 🥳 Congratulations on the project, and thank you.

---

<div class="post-metadata">

**Author:** ![justin](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.solidproject.org/justin/32/6_2.png) [@justin](https://forum.solidproject.org/u/justin)\
**Post date:** [May 12, 2021, 6:32pm UTC](https://forum.solidproject.org/t/implementation-of-webid-oidc-in-guile/4304/4 "2021-05-12T18:32:51Z")

</div>

Great initiative and progress @vkraus! You should probably check out the latest draft of the authentication protocol - [solid-oidc](https://solid.github.io/authentication-panel/solid-oidc/), which supercedes webid-oidc.

Anytime you need, you can check out [Solid Technical Reports](https://solidproject.org/TR) for a current listing of specs in the ecosystem.

---

<div class="post-metadata">

**Author:** ![vkraus](https://avatars.discourse-cdn.com/v4/letter/v/c5a1d2/32.png) [@vkraus](https://forum.solidproject.org/u/vkraus)\
**Post date:** [May 12, 2021, 8:06pm UTC](https://forum.solidproject.org/t/implementation-of-webid-oidc-in-guile/4304/5 "2021-05-12T20:06:06Z")

</div>

Thank you. I am aware that the standards are moving, I keep an eye on both this document and DPoP. I named the project when the protocol was called webid-oidc, and even if some things changed (the webid field of the ID / access token, or the client identifier, for instance), the spirit is the same. If I get a chance, I will rename it.

---

<div class="post-metadata">

**Author:** ![vkraus](https://avatars.discourse-cdn.com/v4/letter/v/c5a1d2/32.png) [@vkraus](https://forum.solidproject.org/u/vkraus)\
**Post date:** [June 29, 2021, 4:55am UTC](https://forum.solidproject.org/t/implementation-of-webid-oidc-in-guile/4304/6 "2021-06-29T04:55:20Z")

</div>

Dear Solid community,

Today I finished the essential features of my server. There are known shortcomings:

- no json-ld support (only Turtle is considered RDF);
- no LD-PATCH support;
- no websocket pubsub API (although, if I understand correctly, the standardization is not yet done for that part);
- no TLS for the server, and the server is only HTTP/1.1 (it is intended to be run behind a reverse proxy).

I have not deployed it yet, because I first need to develop the client application so that I can dismiss inbox notifications before I get overwhelmed by spam. When it is done, I will put test POD online so as to test, debug and fix the myriad of embarrassing errors that I sure made.

In the mean time, if you feel curious, you can run the buggy server. I even packaged it in a docker image:

```
docker run --rm -it docker.io/vivienkraus/webid-oidc webid-oidc -h

```

For the full server, you would run the following command inside the container:

```
webid-oidc server --port 8080 --server-name 'https://data.provider.com' --key-file 'key.jwk' --subject 'https://data.provider.com/profile/card#me' --password "hello" --jwks-uri 'https://data.provider.com/keys' --authorization-endpoint-uri 'https://data.provider.com/authorize' --token-endpoint-uri 'https://data.provider.com/token'

```

Obviously, you would change the ‘[https://data.provider.com/](https://data.provider.com/)’ prefix, and the password for the identity provider, and expose port 8080.

Stay tuned, for I will deploy it on my server as soon as I can!
