FIDO2-related Tools

In 2019, the German c't magazine published some articles [1, 2, 3, 4] about FIDO2 and the new WebAuthn protocol, promoting a bright password-less future. The basic idea is simple and IMHO simply great: use a specialized little hardware device as key generator and secure private key storage. Somewhat like a "TPM to go", and with a simple interface (quite unlike TPM *eg*)

So, after some time of this suggestive promotion I headed straight to the next web store and got such a FIDO2 stick. But soon disillusion started to take place: Yes, you can use the stick on some large sites like Microsoft or Google. But I use my Google account only very minimalistically (Play Store for apps on my mobile), and don't even have a Microsoft account (what for?). And yes, there are some other sites where you can use the stick, but only as a second factor. So the current reality is far from the password-less vision :-(

My next thought was: Even if I use the FIDO2 stick only my private web server, even this would increase both, comfort (no password) and security (no rememberable password) at the same time. There surely is some Apache module for FIDO2 authentication, let's do apt search apache fido2 and ... nothing ?!? Hm, not packaged yet? Found a list of FIDO2 related software, but also there all the server-side stuff is only intended for standalone authentication servers. Is it so hard to verify a signature??

Anyway, my disappointment finally turned to activity, and I started to dive into WebAuthn protocol descriptions and example Apache authentication modules. And that turned into some code, and the result is my mod_authnz_fido2 project.

My design goals with that Apache module roughly were:

What I've learned during implementation is that the client side (in the browser) is available only from JavaScript, so I had to deliver some JS code to the client. I tried to do that somewhat transparently, so that the HTML code itself is not affected. The other learned lesson was that there's no way to use Bearer authentication without processing the tokens with JavaScript. So I've finally ended with storing the token in a cookie that is automatically passed to the server subsequently.


Last modified: Fri Jul 31 21:46:34 2020
Please send questions and comments to roman@hodek.net
Copyright (C) 2002-2020 Roman Hodek
valid html 4.01! Valid CSS! ipv6 accessible