Specifications¶
This page details which specifications are implemented in Canaille, and compares Canaille with other well-known identity providers.
State of the specs in Canaille¶
OAuth2¶
❌ RFC7523: JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants
✅ RFC7592: OAuth 2.0 Dynamic Client Registration Management Protocol
✅ RFC7636: Proof Key for Code Exchange by OAuth Public Clients
❌ RFC8705: OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens
❌ RFC9068: JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens
❌ RFC9101: OAuth 2.0 JWT-Secured Authorization Request (JAR)
❌ RFC9207: OAuth 2.0 Authorization Server Issuer Identification
OpenID Connect¶
SCIM¶
Canaille provides a basic SCIM server implementation.
🟠 RFC7643: System for Cross-domain Identity Management: Core Schema
🟠 RFC7644: System for Cross-domain Identity Management: Protocol
Client-side implementation (i.e. broadcasting changes on users and groups among clients) and advanced features will be implemented in the future.
What’s implemented¶
Endpoints:
/Users (GET, POST)
/Users/<user_id> (GET, PUT, DELETE)
/Groups (GET, POST)
/Groups/<user_id> (GET, PUT, DELETE)
/ServiceProviderConfig (GET)
/Schemas (GET)
/Schemas/<schema_id> (GET)
/ResourceTypes (GET)
/ResourceTypes/<resource_type_id> (GET)
Features:
What is not implemented yet¶
Endpoints:
Features
Comparison with other providers¶
Here is a feature comparison with other OpenID Connect server software.
Canaille voluntarily only implements the OpenID Connect protocol to keep its codebase simple.
Software |
Project |
Protocols implementations |
Backends |
||||||
---|---|---|---|---|---|---|---|---|---|
FLOSS |
Language |
LOC |
OIDC |
SAML |
CAS |
SCIM |
LDAP |
SQL |
|
Canaille |
✅ |
Python |
10k |
✅ |
❌ |
❌ |
🟠 |
✅ |
✅ |
❌ |
❔ |
❔ |
✅ |
✅ |
❌ |
✅ |
✅ |
❔ |
|
✅ |
Go |
50k |
✅ |
❌ |
❌ |
❌ |
✅ |
✅ |
|
✅ |
Python |
65k |
✅ |
✅ |
✅ |
❌ |
✅ |
✅ |
|
✅ |
Go |
55k |
✅ |
✅ |
❌ |
✅ |
✅ |
✅ |
|
✅ |
Java |
360k |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
|
❌ |
❔ |
❔ |
✅ |
✅ |
❌ |
❌ |
✅ |
✅ |
|
✅ |
Java |
❔ |
✅ |
✅ |
✅ |
✅ |
✅ |
❔ |
|
✅ |
Go |
50k |
✅ |
✅ |
❌ |
❌ |
✅ |
✅ |
|
✅ |
Java |
600k |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
|
✅ |
Perl |
130k |
✅ |
✅ |
✅ |
❌ |
✅ |
✅ |
|
❌ |
❔ |
❔ |
✅ |
✅ |
❌ |
✅ |
✅ |
✅ |