Working with Kanidm & openSUSE during my GSoC has been a fantastic journey for me. Sadly, nothing lasts forever. This week marks my last days as a GSoC student. Thanks to my mentor (Firstyear) and the Kanidm community, I had a great time doing open source work.
Overview
Kanidm is an identity management platform written in rust that aims to be easy-to-use, simple, correct and secure.
The 1st deliverable proposes using a Backup code to restore single-device accounts. Users have to generate the Backup code when they are already authenticated. When they want to login, they can replace the TOTP/WebAuthn challenge with Backup code. For example, TOTP + password auth will be Backup code + password instead.
The 2nd deliverable is integrating the async-std library on openssl and tide (a web framework for rust), such that we can have an async library of openssl and tide ssl listener with the async-std runtime.
Deliverables
All contributions, including code, documentation, tests, etc. can be read from the PR and issue links below.
Backup code for account recovery
async-std library on openssl and tide
- Create an async openssl crate with async-std as runtime: Repo
- Create a crate with a tide listener based on the above async openssl crate: Repo
- Integration into Kanidm (TODO)
Experience
GSoC motivates me to make my first open source project contribution. I had an amazing time and I am really glad that I took GSoC. Of course there are challenges, like working across different time zones, writing software with a language that I barely knew, keeping myself motivated without direct supervision, etc. But luckily I managed to overcome these challenges. In return, I learnt a lot of stuff.
Technically, it has a great programming experience. It’s cool to learn a new language and kind of a new programming paradigm. I am also learning a lot about authentication, system design and security.
Perhaps more importantly, it has been a great open source learning experience. I am learning more about the whole open source experience, including coding, code review and community participation. In Kanidm, there are easy “good first issues” to play with, and mentors are always available for feedback. The best thing about GSoC is definitely the fact that it motivates me to take the first step into the open source world.
Last but not least, I have to thank Kanidm & openSUSE once again for their fantastic mentoring. In the future, I will definitely keep in touch and continue to contribute to not only Kanidm, but more different open source projects!