-
Notifications
You must be signed in to change notification settings - Fork 160
Description
Describe the bug
When integrating OpenCloud with Kanidm as the IdP, I ran into a problem:
- The web client (WEB_OIDC_CLIENT_ID=opencloudweb) works fine with Kanidm, even though Kanidm stores client IDs case-insensitively.
- The native clients (desktop, Android, iOS, Cyberduck) fail to log in because they expect their client_id to match exactly, including casing.
Steps to reproduce
- Create a Kanidm OAuth2 client with ID openclouddesktop.
- Try to log in with the OpenCloud Desktop client (which sends OpenCloudDesktop).
- Login fails with the client_id mismatch error (Error in the OpenCloud Webpage).
Expected behavior
OpenCloud should accept client_id values case-insensitively, since many IdPs store them normalized (usually lowercase).
Actual behavior
Native clients use hardcoded client IDs:
- Desktop → OpenCloudDesktop
- Android → OpenCloudAndroid
- iOS → OpenCloudIOS
- Cyberduck → Cyberduck
Kanidm internally normalizes client IDs to lowercase. So OpenCloudDesktop becomes openclouddesktop.
OpenCloud enforces strict case-sensitive matching of client_id.
This mismatch causes login to fail, even if all other settings (redirect URIs, scopes, role mappings) are correct.
With the same settings login via Web works.
The Error Message:
Error: Anmeldung fehlgeschlagen Das Publikum des id_token enthält nicht "OpenCloudDesktop".
Setup
Not needed
Additional context
For the web client, admins can configure the client ID freely (WEB_OIDC_CLIENT_ID), so casing isn’t a problem.
For the native clients, the client_id is hardcoded in the apps, so admins have no way to adjust casing.
This creates unnecessary friction: everything works on the web, but the native apps break unless the IdP supports case-sensitive client IDs.
Suggested fix:
Normalize client_id (e.g., lowercase) inside OpenCloud before comparing with the IdP or make it case-insensitively.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status