<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Yaal Coop - contributions, canaille</title><link href="https://yaal.coop/en/" rel="alternate"/><link href="https://yaal.coop/en/blog/feeds/tag-contributions-canaille.atom.xml" rel="self"/><id>https://yaal.coop/en/</id><updated>2025-11-13T00:00:00+01:00</updated><entry><title>Canaille beta is out</title><link href="https://yaal.coop/en/blog/canaille-beta" rel="alternate"/><published>2025-11-13T00:00:00+01:00</published><updated>2025-11-13T00:00:00+01:00</updated><author><name>Éloi Rivard &lt;eloi@yaal.coop&gt;</name></author><id>tag:yaal.coop,2025-11-13:/en/blog/canaille-beta</id><summary type="html">&lt;p&gt;After several years of development, Canaille is now in beta version.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Our recent work on Canaille funded by &lt;a href="https://nlnet.nl"&gt;NLNet Foundation&lt;/a&gt; brings us to release a beta version. Let's have a look on what changed.&lt;/p&gt;
&lt;h1&gt;Recent Work&lt;/h1&gt;
&lt;h2&gt;Task Manager&lt;/h2&gt;
&lt;p&gt;We implemented a task manager that allows Canaille to perform long-running tasks asynchronously.
This is notably used to propagate &lt;a href="https://scim.libre.sh"&gt;SCIM&lt;/a&gt; requests or send emails.
The implementation uses &lt;a href="https://dramatiq.io"&gt;dramatiq&lt;/a&gt;, and we published the &lt;a href="https://codeberg.org/yaal/dramatiq-eager-broker"&gt;dramatiq-eager-broker&lt;/a&gt; package which allows maintaining synchronous behavior in the test suite, and when the task manager is not configured.&lt;/p&gt;
&lt;h2&gt;OpenID Connect Certification&lt;/h2&gt;
&lt;p&gt;As we &lt;a href="canaille-oidc-certification"&gt;mentioned recently&lt;/a&gt;, Canaille obtained OpenID Connect Foundation certification last September.
This guarantees that Canaille behaves in compliance with most common OpenID Connect operations.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://openid.net/developers/certified-openid-connect-implementations/"&gt;&lt;img alt="Canaille OIDC certification" src="/media/blog/articles/canaille-oidc-certification.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The certification process revealed many interpretation errors, often minor but sometimes significant.
We fixed most issues directly in &lt;a href="https://github.com/authlib/authlib"&gt;Authlib&lt;/a&gt;, the underlying library implementing the standards.&lt;/p&gt;
&lt;h2&gt;Security&lt;/h2&gt;
&lt;p&gt;We implemented the remaining recommendations from the &lt;a href="https://www.radicallyopensecurity.com"&gt;Radically Open Security&lt;/a&gt; audit.
Most were minor recommendations following best practices, but there was a high threat finding. Now everything is now in place. &lt;a href="/media/blog/articles/NGIE Canaille penetration test report 2025 1.0.pdf"&gt;You can have a look at the report&lt;/a&gt;.
We also &lt;a href="https://canaille.readthedocs.io/en/latest/references/security.html"&gt;documented&lt;/a&gt; the &lt;a href="https://cyber.gouv.fr/publications/recommandations-relatives-lauthentification-multifacteur-et-aux-mots-de-passe"&gt;ANSSI recommendations&lt;/a&gt; regarding authentication and password management, which Canaille implements.
Most recommendations are implemented, the main remaining task is to &lt;a href="https://gitlab.com/yaal/canaille/-/issues/296"&gt;support WebAuthn&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Documentation&lt;/h2&gt;
&lt;p&gt;We continuously work on documentation, aiming to follow &lt;a href="https://diataxis.fr"&gt;Diátaxis&lt;/a&gt; recommendations.
We wrote chapters for &lt;a href="https://canaille.readthedocs.io/en/latest/tutorials/getting-started.html"&gt;getting started with Canaille&lt;/a&gt; and &lt;a href="https://canaille.readthedocs.io/en/latest/tutorials/oidc-client.html"&gt;configuring the first OpenID Connect client&lt;/a&gt;.
These initial steps indirectly led us to work on &lt;a href="https://github.com/jag-k/pydantic-settings-export"&gt;pydantic-settings-export&lt;/a&gt;, which notably allows users to export a configuration file with all default values commented and described, providing a good starting point to begin adapting the configuration. We're still using a custom implementation while we upstream all the changes we need to the original project.&lt;/p&gt;
&lt;h1&gt;What's Next&lt;/h1&gt;
&lt;p&gt;Canaille aims for simplicity and its functional scope is therefore quite limited.
We thus limit the number of features we want to implement, however a few remain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gitlab.com/yaal/canaille/-/issues/296"&gt;WebAuthn support&lt;/a&gt; as an authentication factor.
  This will allow us to implement the last missing ANSSI recommendations.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gitlab.com/yaal/canaille/-/issues/211"&gt;Captcha method support&lt;/a&gt;.
  At first glance it's surprising to include this feature at a time when the relevance of Captchas is diminishing with the emergence of AIs.
  However, we note that this is an essential feature for some users, as evidenced by the &lt;a href="https://lacontrevoie.fr/blog/2024/comparatif-de-onze-solutions-de-sso-libres"&gt;very thorough comparison of open source SSO solutions&lt;/a&gt; published by La Contre-Voie last year.&lt;/li&gt;
&lt;li&gt;Implementation of a &lt;a href="https://gitlab.com/yaal/canaille/-/issues/301"&gt;custom plugin system for Canaille&lt;/a&gt;.
  This is on a more distant horizon, but we would like to offer an API so developers can implement their own authentication factor for Canaille, or their own database connector.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Besides these visible features, most upcoming developments will be under the hood:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improving the &lt;a href="https://github.com/python-scim"&gt;SCIM stack&lt;/a&gt;, notably to bring support for &lt;a href="https://gitlab.com/yaal/canaille/-/issues/274"&gt;SCIM filters&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Improving the &lt;a href="https://github.com/authlib/authlib"&gt;OIDC stack&lt;/a&gt; to bring support for new standards.
  Particularly those related to &lt;a href="https://gitlab.com/yaal/canaille/-/issues/155"&gt;centralized logout&lt;/a&gt; or security.&lt;/li&gt;
&lt;/ul&gt;</content><category term="FOSS"/><category term="FOSS"/><category term="contributions, canaille"/></entry></feed>