# \[ANN\] OpenID connect

**URL:** https://discuss.ocaml.org/t/ann-openid-connect/6279
**Category:** Community
**Tags:** announce
**Created:** [August 21, 2020, 6:27pm UTC](https://discuss.ocaml.org/t/ann-openid-connect/6279 "2020-08-21T18:27:27Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![ulrikstrid](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/ulrikstrid/32/1600_2.png) [@ulrikstrid](https://discuss.ocaml.org/u/ulrikstrid)
#### Post date: [August 21, 2020, 6:27pm UTC](https://discuss.ocaml.org/t/ann-openid-connect/6279/1 "2020-08-21T18:27:27Z")

</div>

I recently released a OpenID connect library to opam named [oidc](https://github.com/ulrikstrid/ocaml-oidc). And today I got it [certified by the openid foundation](https://openid.net/developers/certified/) which proves that it’s up to par with the specification. At least for the 2(3) profiles that I certified.

I also created a higher level library oidc-client that used the excellent [Piaf](https://github.com/anmonteiro/piaf) library under the hood to make it easy to build a client. I can’t publish that on opam since it uses unreleased libraries by @anmonteiro but I try to maintain the opam files even though I mainly use esy.  
This should allow anyone to create websites with simple login with Facebook/Apple/Microsoft/Google.

This has been quite a ride for me, I built and published [JOSE](https://github.com/ulrikstrid/reason-jose) to work with JWTs and JWKs and [cookie](https://github.com/ulrikstrid/ocaml-cookie) to have the implementation be less ad-hoc.  
I also built a [web framework](https://github.com/reason-native-web/morph) that I used in the certification process.

Docs: [https://ulrikstrid.github.io/ocaml-oidc/](https://ulrikstrid.github.io/ocaml-oidc/)

[![](https://openid.net/wordpress-content/uploads/2016/04/oid-l-certification-mark-l-rgb-150dpi-90mm.png) ](https://openid.net/wordpress-content/uploads/2016/04/oid-l-certification-mark-l-rgb-150dpi-90mm.png)

---

<div class="post-metadata">

### Author: ![avsm](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/avsm/32/6_2.png) [@avsm](https://discuss.ocaml.org/u/avsm)
#### Post date: [August 21, 2020, 7:00pm UTC](https://discuss.ocaml.org/t/ann-openid-connect/6279/2 "2020-08-21T19:00:28Z")

</div>

This is just perfect timing; I was just looking into integrating OpenID on a website redesign I’m doing, and here you are! Thank you for working on and publishing this.

---

<div class="post-metadata">

### Author: ![ulrikstrid](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/ulrikstrid/32/1600_2.png) [@ulrikstrid](https://discuss.ocaml.org/u/ulrikstrid)
#### Post date: [August 21, 2020, 8:01pm UTC](https://discuss.ocaml.org/t/ann-openid-connect/6279/3 "2020-08-21T20:01:55Z")

</div>

Let me know if I can help or if you feel like anything is missing. The documentation tries to describe the flow and where you should use what but it can always be better.

---

<div class="post-metadata">

### Author: ![bluddy](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/bluddy/32/104_2.png) [@bluddy](https://discuss.ocaml.org/u/bluddy)
#### Post date: [August 21, 2020, 8:19pm UTC](https://discuss.ocaml.org/t/ann-openid-connect/6279/4 "2020-08-21T20:19:54Z")

</div>

Thanks for these great libraries! I’ve added them to [ocamlverse](https://ocamlverse.github.io/content/web_networking.html#http-clients). Feel free to suggest clarifications.

Any chance of bringing morph to opam?

---

<div class="post-metadata">

### Author: ![ulrikstrid](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/ulrikstrid/32/1600_2.png) [@ulrikstrid](https://discuss.ocaml.org/u/ulrikstrid)
#### Post date: [August 21, 2020, 8:33pm UTC](https://discuss.ocaml.org/t/ann-openid-connect/6279/5 "2020-08-21T20:33:00Z")

</div>

Morph is also based on Piaf which is not on opam. But if @anmonteiro can figure out a way to get his awesome libraries to opam I would gladly publish the things I built on top as well.

I try to maintain the opam files so it should be possible to pin them at least.

---

<div class="post-metadata">

### Author: ![jordwalke](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/jordwalke/32/155_2.png) [@jordwalke](https://discuss.ocaml.org/u/jordwalke)
#### Post date: [August 21, 2020, 9:45pm UTC](https://discuss.ocaml.org/t/ann-openid-connect/6279/6 "2020-08-21T21:45:45Z")

</div>

Congrats @ulrikstrid. This is huge news.

---

<div class="post-metadata">

### Author: ![kanishka](https://avatars.discourse-cdn.com/v4/letter/k/3e96dc/32.png) [@kanishka](https://discuss.ocaml.org/u/kanishka)
#### Post date: [August 22, 2020, 12:14am UTC](https://discuss.ocaml.org/t/ann-openid-connect/6279/7 "2020-08-22T00:14:29Z")

</div>

This sounds really useful.

You might take interest in webauthn, at a later point.

---

<div class="post-metadata">

### Author: ![ulrikstrid](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/ulrikstrid/32/1600_2.png) [@ulrikstrid](https://discuss.ocaml.org/u/ulrikstrid)
#### Post date: [August 22, 2020, 12:48pm UTC](https://discuss.ocaml.org/t/ann-openid-connect/6279/8 "2020-08-22T12:48:11Z")

</div>

I think this could be used in a OpenID Connect provider but I’m not 100% sure how it should work.  
But very interesting!
