Modèles de donnée¶
Cette référence détaille les modèles de donnée utilisés par Canaille. Cela est surtout utile pour les développeurs.
- class canaille.backends.models.BackendModel[source]¶
Bases :
objectLa classe abstraite du modèle backend.
Il détaille tous les méthodes et attributs qui doivent être implémentées pour chaque modèle et chaque backend.
- class canaille.backends.models.Model[source]¶
Bases :
objectLa classe abstraite de modèle.
Il détaille tous les attributs en commun entre tous les modèles.
- created: datetime | None = None¶
La date (
datetime) à laquelle la ressource a été ajoutée par le fournisseur de service.
- id: str | None = None¶
Un identifiant unique pour une ressource SCIM tel que définie par le fournisseur du service. Id sera
Nonejusqu’à ce que la méthodeBackendModel.savesoit appelée.Chaque représentation de la ressource DOIT inclure une valeur non vide « id ». Cet identifiant DOIT être unique dans l’ensemble des ressources du fournisseur de service SCIM. L’identifiant DOIT être stable et non réassignable et ne pas change quand la même ressource est retournée dans les requêtes suivantes. La valeur de l’attribut « id » est toujours produite par le fournisseur de service est NE DOIT PAS être fournie par le client. La chaîne « bulkId » est un mot-clef réservé et NE DOIT PAS être utilisée comme une valeur d’identifiant unique. Les caractéristiques d’attribut sont « caseExact » à « true », la modification de « readOnly » et une caractéristique »returned » à « always ». Voir la Section 9 pour les considérations supplémentaires concernant la vie privée.
- property identifier¶
Retourne une valeur unique qui sera utilisée pour identifier l’instance du modèle.
Cette valeur sera utilisée dans les URL de Canaille, il devrait donc être unique et court.
- class canaille.core.models.Group[source]¶
Bases :
ModelModèle de Groupe.
Basé sur le schéma de Groupe SCIM.
- members: list[~typing.Annotated[~canaille.core.models.User, {'backref': 'groups'}]] = []¶
Une liste des membres du Groupe.
Tandis que certaines valeurs PEUVENT être ajoutées ou supprimées, les sous-attributs de members sont « immutables ».. Le sous-attribut value contient la valeur de l’attribut « id » d’une ressource SCIM, and le sous-attribut « $ref » doit être l’URI d’une ressource SCIM telle que « User » ou « Group ». L’intention du type « Group » est d’autoriser les fournisseurs de service à supporter les groupes imbriqués. Les fournisseurs de service PEUVENT exiger des clients qu’ils fournissent une valeur non nulle en paramétrant la caractéristique d’attribut « required » d’un sous-attribut de l’attribut « members » dans le schéma de la ressource « Group ».
- class canaille.core.models.User(*args, **kwargs)[source]¶
Bases :
ModelModèle Utilisateur.
Basé sur les spécifications`SCIM User schema <https://datatracker.ietf.org/doc/html/rfc7643#section-4.1>`_, Entreprise User Schema Extension et le brouillon SCIM Password Management Extension.
- can(*permissions: Permission) bool[source]¶
L’utilisateur a ou non la
Permissionen fonction de laconfiguration.
- display_name: str | None = None¶
Le nom de l’utilisateur, destiné à être affiché auprès d’autres utilisateurs.
Chaque utilisateur retourné PEUT inclure une valeur « displayName » non nulle. Le nom DOIT être le nom complet de l’utilisateur décrit, is connu (par exemple « Babs Jensen » ou « Mme. Barbara J Jensen, III ») mais PEUT être un nom d’utilisateur, si c’est la seule information disponible (par exemple « bjensen ») La valeur fournie DOIT être le nom d’affichage avec lequel l’utilisateur est normalement affiché par le fournisseur de service quand affiché auprès d’autres utilisateurs.
- emails: list[str] = []¶
L’adresse email de l’utilisateur.
La valeur DOIT être en accord avec [RFC5321]. Les fournisseurs de service DOIT normaliser la valeur en fonction de [RFC5321], par exemple « bjensen@example.com » à la place de « bjensen@EXAMPLE.COM ». Le sous-attribut « display » PEUT être utilisé pour retourner la représentation normalisée de l’adresse email. Le sous-attribut « type » est utilisé pour fournir une classification significative pour l’utilisateur (humain). L’interface utilisateur devrait encourager l’utilisateur des valeurs basiques « work », « home » et « other » et PEUT autoriser des types additionnels pouvant être utilisés à la discrétion des clients SCIM.
- employee_number: str | None = None¶
Un identifiant en chaîne de caractères, généralement numérique ou alphanumérique, assigné à une personne, généralement basée sur l’ordre d’embauche ou d’association avec une organisation.
- family_name: str | None = None¶
Le nom de famille de l’utilisateur, ou le patronyme (e.g., « Jensen » given the full name « Ms. Barbara Jane Jensen, III »).
- formatted_address: str | None = None¶
L’adresse e-mail complète, formatée pour l’affichage ou l’utilisation avec un label de mailing.
Cet attribut PEUT contenir des retours à la ligne.
- formatted_name: str | None = None¶
Le nom complet, incluant tous les prénoms, titres et suffixes appropriés, formatés pour l’affichage (e.g., « Mme. Barbara Jane Jensen, III »).
- given_name: str | None = None¶
Le nom courant de l’utilisateur, ou prénom dans la plupart des langues occidentales (par exemple., « Barbara » dans le nom complet « Ms. Barbara Jane Jensen, III »).
- groups: list[~typing.Annotated[~canaille.core.models.Group, {'backref': 'members'}]] = []¶
Une liste de groupes auxquels l’utilisateur appartient, soit par appartenance directe, soit par groupes imbriqués ou calculés dynamiquement.
Les valeurs sont faites pour activer l’expression de modèles au contrôle d’accès basé sur les rôles ou basé sur des groupes communs, bien qu’aucun modèle d’autorisation explicite n’est défini. Il est prévu que les sémantiques des membres de groupe et n’importe quel comportement ou autorisation donnée comme résultat de l’appartenance sont définies par le fournisseur de service. Les type canoniques « direct » et « indirect » sont définis pour décrire comment l’appartenance au groupe était dérivé. L’appartenance directe au groupe indique que l’utilisateur est directement associé avec le groupe et DEVRAIT indiquer que les clients peuvent modifier l’appartenance au travers de la ressource Groupe. L’appartenance indirecte au groupe indique que l’appartenance de l’utilisateur est transitive ou dynamique et implique que les clients ne peuvent pas modifier une appartenance indirecte au groupe au travers de la ressource Groupe mais PEUVENT modifier l’appartenance directe au groupe au travers de la ressource Groupe, ce qui peut influencer l’appartenance indirecte. Si le fournisseur de service SCIM expose une ressource Groupe, le sous-attribut « value » DOIT être l”« id » et le sous-attribut « $ref »doit être l’URI des ressources Groupe correspondantes auxquelles l’utilisateur appartient. Puisque cet attribut a une mutabilité en lecture seule, l’appartenance du groupe DOIT être appliquée via la Ressource Groupe (section 4.2). Cet attribut a la mutabilité en lecture seule (« readOnly»).
- has_webauthn_credential() bool[source]¶
Check whether a WebAuthn credential has been registered for the user.
- hotp_counter: int | None = None¶
Compteur de mots de passes à usage unique HMAC. Utilisé pour l’authentification multi-facteurs.
- last_otp_login: datetime | None = None¶
A DateTime indicating when the user last logged in with a one-time passcode. This attribute is currently used to check whether the user has activated one-time passcode authentication or not.
- lock_date: datetime | None = None¶
Une date (DateTime) indiquant quand la ressource a été verrouillée.
- one_time_password: str | None = None¶
Mot de passe à usage unique utilisé pour l’authentification multi-facteurs par email ou SMS.
- one_time_password_emission_date: datetime | None = None¶
A DateTime indicating when the user last emitted an email or sms one-time passcode.
- password: str | None = None¶
Cette attribut a pour but d’être utilisé pour définir, remplacer ou comparer (c’est-à-dire fitrer par égalité) un mot de passe. La valeur en clair ou hashée du mot de passe NE DEVRAIT PAS être retournable par le fournisseur de service. Si un fournisseur de service détient la valeur localement, la valeur DEVRAIT être hashée. Quand un mot de passe est défini ou changé par le client, le mot de passe en clair DEVRAIT être traité par le fournisseur de service comme suit :
Prépare la valeur en clair pour une comparaison de langue internationale. Voir la section 7.8 de [RFC7644].
Valide la valeur contre la politique du mot de passe serveur. Note : La définition et les contraintes de la politique de mot de passe sont hors du périmètre de ce document.
Force que le valeur soit cryptée (par exemple, hashée). Voir la section 9.2 pour un hash acceptable et la gestion de chiffrement quand l’enregistrement et la persistance pour des raisons de suivi de fourniture.
Un fournisseur de service qui passe immédiatement la valeur en clair à un autre système ou interface de programmation DOIT passer la valeur directement sur une connexion sécurisé (e.g., Transport Layer Security (TLS)). Si la valeur a besoin d’être temporairement persistée pour une période de temps (e.g., à cause du processus utilisé) avant son transfert, alors la valeur DOIT être protégée par diverses méthode, tel que le chiffrement.
Tester l’égalité PEUT être gérée si une valeur hashée enregistrée existe. Quand un test d’égalité est fait, le fournisseur du service :
Prépare la valeur du filtre pour une comparaison de langue internationale. Voir la section7.8 de [RFC7644].
Génère le hash salé de la valeur du filtre et teste la correspondance avec la valeur locale.
La mutabilité de l’attribut password est « writeOnly » (écriture seule), indiquant que la valeur NE DOIT PAS être renvoyée par un fournisseur de service sous quelque forme que ce soit (la caractéristique « returned » de l’attribut est « never »).
- password_failure_timestamps: list[datetime] = []¶
Cet attribut stocke les dates des tentatives de connexions infructueuses de l’utilisateur.
C’est actuellement utilisé par le système de blocage des connexions infructueuses.
- password_last_update: datetime | None = None¶
Indique la dernière fois où le mot de passe utilisateur a été changé. Par défaut, c’est la date de création du mot de passe qui est utilisée.
- phone_numbers: list[str] = []¶
Numéros de téléphone pour l’utilisateur.
La valeur DOIT être spécifiée en accord avec le format défini dans [RFC3966], par exemple, “tel:+33123456789”. Les fournisseurs de service DOIVENT normaliser la valeur selon le format [RFC3966], quand cela est approprié. Le sous-attribut « display » PEUT être utilisé pour renvoyer la représentation normalisée de la valeur du numéro de téléphone. Le sous-attribut « type » prend souvent les valeurs habituelles de « work », « home », « mobile », « fax », « pager », et « other » et PEUT autoriser d’autres types définis par les clients SCIM.
- photo: str | None = None¶
Une URI qui est une URL (telle que définie dans la section 1.1.3 de [RFC3986]) pointant vers la localisation de la ressource représentant l’image de l’utilisateur.
La ressource DOIT être un fichier (par exemple une image au format GIF, JPEG, ou PNG) plutôt qu’une page web contenant une image. Les fournisseurs de service PEUVENT retourner la même image dans différentes tailles, bien qu’il n’existe pas actuellement de standard pour décrire les images de différentes tailles. Notez que cet attribut NE DEVRAIT PAS être utilisé pour envoyer n’importe quelle photo prise par cet utilisateur mais plutôt les photos de profil de l’utilisateur affichable quand une description l’utilisateur devrait être envoyé. À la place des valeurs canoniques standard pour le type, cet attribut définit les valeurs canoniques suivantes pour représenter les tailles de photo populaire : « photo » et « vignette ».
- preferred_language: str | None = None¶
Indique la langue préférée de l’utilisateur, parlée ou écrite, et est généralement utilisée pour sélectionner la langue de l’interface utilisateur.
La valeur indique l’ensemble des langues naturelles qui sont préférées. Le format de la valeur est la même que le champ d’en-tête HTTP Accept-Language (sans inclure « Accept-Language: » et est défini dans la section 5.3.5 de [RFC7231]. Le but de cette valeur est d’activer les applications cloud à exécuter une correspondance des étiquettes de langue [RFC4647] avec les préférences de langues de l’utilisateur, sans prendre en compte ce que le user-agent (qui pourrait être partagé) pourrait indiquer, ou dans un interaction qui n’implique pas un utilisateur (tel que dans une interaction du type d’OAuth 2.0 déléguée [RFC6749]) où il n’y a pas de negociation avec l’en-tête HTTP Accept-Language.
- profile_url: str | None = None¶
Une URI qui est une URL (tel que définie dans une section 1.1.3 de [RFC3986]) et pointant à une localisation représentant le profil en ligne de l’utilisateur (par exemple une page web).
Les URI sont au format canonique selon la section 6.2 de [RFC3986].
- property readable_fields: set[str]¶
Les champs que l’utilisateur peut lire dans la configuration de
configuration.Cela n’inclut pas les champs
writable.
- secret_token: str | None = None¶
Jeton unique généré pour chaque utilisateur, utilisé pour l’authentification multi-facteurs.
- street: str | None = None¶
Le composant d’adresse rue complète, qui peut inclure le numéro de la maison, le nom de la rue, code
postal et les informations de rue étendues sur plusieurs lignes. Cet attribut PEUT contenir des retours à la ligne.
- user_name: str¶
L’identifiant unique de l’utilisateur pour un fournisseur de service, généralement utilisé par l’utilisateur pour s’authentifier directement auprès de ce fournisseur de service.
Souvent affiché à l’utilisateur comme leur identifiant unique dans le système (au contraire de « id » ou « externalId », qui sont généralement des identifiants opaques et non conviviaux). Chaque utilisateur DOIT inclure une valeur de userName non vide. Cet identifiant DOIT être unique parmi tous les Users (utilisateurs) du fournisseur de service. Cet attribut est OBLIGATOIRE et n’est pas sensible à la casse.
- webauthn_credentials: list[WebAuthnCredential] = []¶
WebAuthn credentials registered by the user for passwordless/MFA authentication.
- property writable_fields: set[str]¶
Les champs que l’utilisateur peut modifier selon la
configuration.
- class canaille.core.models.WebAuthnCredential[source]¶
Bases :
ModelWebAuthn credential for passwordless/MFA authentication.
- last_used_at: datetime | None = None¶
Timestamp of the last successful authentication with this credential.
- transports: str | None = None¶
JSON-encoded list of supported transports (usb, nfc, ble, internal, hybrid).
- user: User, {'backref': 'webauthn_credentials'}]¶
The user who owns this credential.
- canaille.core.models.string_code(code: int, digit: int) str[source]¶
Ajoute des 0 au début si la longueur du code ne correspond pas la longueur définie.
Par exemple, avec le paramètre
digit=6et lecode=123, cette méthode retournerait000123:>>> otp.string_code(123) '000123'
- class canaille.oidc.basemodels.AuthorizationCode[source]¶
Bases :
ModelDéfinition du code temporaire d’autorisation OpenID Connect.
- acr: str | None¶
Authentication Context Class Reference. String specifying an Authentication Context Class Reference value that identifies the Authentication Context Class that the authentication performed satisfied.
- class canaille.oidc.basemodels.Client[source]¶
Bases :
ModelDéfinition de client OpenID Connect.
Basée sur les protocoles OAuth 2.0 Dynamic Client Registration et les spécifications OpenID Connect RP-Initiated Logout.
- application_type: str = 'web'¶
Kind of the application. The default, if omitted, is web. The defined values are native or web. Web Clients using the OAuth Implicit Grant Type MUST only register URLs using the https scheme as redirect_uris; they MUST NOT use localhost as the hostname. Native Clients MUST only register redirect_uris using custom URI schemes or loopback URLs using the http scheme; loopback URLs use localhost or the IP loopback literals 127.0.0.1 or [::1] as the hostname. Authorization Servers MAY place additional constraints on Native Clients. Authorization Servers MAY reject Redirection URI values using the http scheme, other than the loopback case for Native Clients. The Authorization Server MUST verify that all the registered redirect_uris conform to these constraints. This prevents sharing a Client ID across different types of Clients.
- client_id: str | None¶
OBLIGATOIRE.
Chaîne de caractères contenant l’identifiant du client OAuth 2.0. L’identifiant NE DOIT PAS être actuellement valide pour un autre client inscrit, bien qu’un serveur d’autorisation PUISSE donner le même identifiant client à plusieurs instances d’un client inscrit à sa discrétion.
- client_id_issued_at: datetime | None = None¶
OPTIONNEL.
La date à laquelle l’identifiant client a été émis. La date est représentée comme le nombre de secondes écoulées depuis 1970-01-01T00:00:00Z mesuré en UTC jusqu’à la date d’émission.
- client_name: str | None = None¶
Le nom du client à présenter à l’utilisateur final durant l’autorisation, sous la forme d’une chaîne de caractères lisible par un être humain.
Si omis, le serveur d’autorisation PEUT afficher la valeur brute « client_id » à l’utilisateur final à la place. Il est RECOMMANDÉ que les clients envoient toujours ce champ. La valeur de ce champ PEUT être internationalisée, comme décrit dans la Section 2.2.
- client_secret: str | None = None¶
OPTIONNEL.
Chaîne secrète du client OAuth 2.0. Si généré, il DOIT être unique pour chaque « client_id » et DEVRAIT être unique pour de multiple instances du client utilisant le même « client_id ». Cette valeur est utilisée par des clients confidentiels pour authentifier le terminal du jeton, tel que décrit dans OAuth 2.0 [RFC6749], Section 2.3.1.
- client_secret_expires_at: datetime | None = None¶
REQUIS si « client_secret » est émis.
La date à laquelle le secret du client va expirer ou 0 s’il n’expire pas. La date est représentée comme le nombre de secondes écoulées depuis 1970-01-01T00:00:00Z mesuré en UTC jusqu’à la date d’expiration.
- client_uri: str | None = None¶
URL d’une page web fournissant des informations à propos du client.
Si présent, le serveur DEVRAIT afficher cette URL à l’utilisateur final de manière cliquable. Il est RECOMMANDÉ que les clients envoient toujours ce champ. La valeur de ce champ DOIT pointer vers une page web valide. La valeur de ce champ DEVRAIT être internationalisée, comme décrit dans la section 2.2.
- contacts: list[str] = []¶
Un tableau de chaînes de caractères représentant différentes façon de contacter les personnes responsables de ce client, généralement des adresses e-mail.
Le serveur d’autorisation PEUT rendre ces adresse de contact disponibles aux utilisateurs finaux pour traiter les requêtes pour le client. Consultez la section 6 pour obtenir des informations sur des considérations concernant la vie privée.
- default_acr_values: list[str] = []¶
Default requested Authentication Context Class Reference values. Array of strings that specifies the default acr values that the OP is being requested to use for processing requests from this Client, with the values appearing in order of preference. The Authentication Context Class satisfied by the authentication performed is returned as the acr Claim Value in the issued ID Token. The acr Claim is requested as a Voluntary Claim by this parameter. The acr_values_supported discovery element contains a list of the supported acr values supported by the OP. Values specified in the acr_values request parameter or an individual acr Claim request override these default values.
- default_max_age: int | None = None¶
Default Maximum Authentication Age. Specifies that the End-User MUST be actively authenticated if the End-User was authenticated longer ago than the specified number of seconds. The max_age request parameter overrides this default value. If omitted, no default Maximum Authentication Age is specified.
- grant_types: list[str] = ['authorization_code', 'refresh_token']¶
Tableau de chaînes de caractères de type autorisation (« grant ») OAuth 2.0 que le client peut utiliser au terminal jeton. Ces types d’autorisation sont définies comme suit :
« authorization_code » : le type de code d’autorisation défini dans OAuth 2.0, section 4.1.
« implicit » : le type d’autorisation implicite définie dans OAuth 2.0, section 4.2.
« password » : le type d’autorisation avec le mot de passe du propriétaire de la ressource défini dans OAuth 2.0, section 4.3.
« client_credentials » : le type d’autorisation par identification du client défini dans OAuth 2.0, section 4.4.
« refresh_token » : le type d’autorisation par jeton renouvelé dans OAuth 2.0, section 6.
« urn:ietf:params:oauth:grant-type:jwt-bearer » : le type d’autorisation de jeton Bearer JWT défini dans OAuth JWT Bearer Token Profiles [RFC7523].
« urn:ietf:params:oauth:grant-type:saml2-bearer » : l’autorisation SAML 2.0 « Bearer Assertion » défini dans OAuth SAML 2 Bearer Token Profiles [RFC7522].
Si le terminal du jeton est utilisé dans le type d’autorisation, la valeur de ce paramètre DOIT être la même que la valeur du paramètre « grant_type » passé au terminal du jeton défini dans la définition du type d’autorisation. Les serveurs d’autorisation PEUVENT accepter d’autres valeurs comme défini dans le processus d’extension destype d’autorisation dans OAuth 2.0, section 4.5. S’il est omis, le comportement par défaut est un client utilisant uniquement le type d’autorisation « authorization_code ».
- id_token_encrypted_response_alg: str | None = None¶
JWE alg algorithm [JWA] REQUIRED for encrypting the ID Token issued to this Client. If this is requested, the response will be signed then encrypted, with the result being a Nested JWT, as defined in [JWT]. The default, if omitted, is that no encryption is performed.
- id_token_encrypted_response_enc: str | None = None¶
JWE enc algorithm [JWA] REQUIRED for encrypting the ID Token issued to this Client. If id_token_encrypted_response_alg is specified, the default id_token_encrypted_response_enc value is A128CBC-HS256. When id_token_encrypted_response_enc is included, id_token_encrypted_response_alg MUST also be provided.
- id_token_signed_response_alg: str = 'RS256'¶
JWS alg algorithm [JWA] REQUIRED for signing the ID Token issued to this Client. The value none MUST NOT be used as the ID Token alg value unless the Client uses only Response Types that return no ID Token from the Authorization Endpoint (such as when only using the Authorization Code Flow). The default, if omitted, is RS256. The public key for validating the signature is provided by retrieving the JWK Set referenced by the jwks_uri element from OpenID Connect Discovery 1.0 [OpenID.Discovery].
- initiate_login_uri: str | None = None¶
URI using the https scheme that a third party can use to initiate a login by the RP, as specified in Section 4 of OpenID Connect Core 1.0 [OpenID.Core]. The URI MUST accept requests via both GET and POST. The Client MUST understand the login_hint and iss parameters and SHOULD support the target_link_uri parameter.
- jwks: str | None = None¶
Valeur du document JSON Web Key Set [RFC7517] du client, qui contient les clés publiques du client.
La valeur de ce champ DOIT être un objet JSON contenant un « JWK Set » valide. Ces clefs peuvent être utilisées par des protocoles de plus haut niveau qui utilise des signatures ou le chiffrement. Ce paramètre est conçu pour être utilisé par des clients qui ne peuvent pas utiliser le paramètre « jwks_uri », tel que des clients natifs qui ne peuvent pas disposer d’URL publiques. Les paramètres « jwks_uri » et « jwks » NE DOIVENT PAS être présent dans la même requête our réponse.
- jwks_uri: str | None = None¶
Chaîne de caractères URL référençant le document JSON Web Key (JWK) Set [RFC7517] du client, qui contient les clefs publiques du client.
La valeur de ce champ DOIT pointer vers un document JWK Set valide. Ces clefs peuvent être utilisées par des protocoles de plus haut niveau utilisant des signatures ou du chiffrement. Par exemple, ces clefs peuvent être utilisées par des applications pour valider des requêtes signées faites pour le terminal du jeton quand des JWTs sont utilisées pour l’authentification cliente [RFC7523]. L’utilisation de ce paramètre est préféré au paramètre « jwks », car il permet une rotation des clefs plus facile. Les paramètres « jwks_uri » et « jwks » NE DOIVENT PAS être tous les deux présents dans la même requête ou réponse.
- logo_uri: str | None = None¶
URL en chaîne de caractères pointant vers un logo pour le client.
Si présente, le serveur DOIT afficher cette image à l’utilisateur final pendant l’approbation. La valeur de ce chant DOIT pointer vers un fichier d’image valide. La valeur de ce champ PEUT être dans plusieurs langues, comme décrit dans la Section 2.2.
- policy_uri: str | None = None¶
URL en chaîne de caractères pointant vers un document de politique de confidentialité compréhensible, décrivant la façon dont l’organisation déployant l’application collecte, utilise, conserve et partage les données personnelles.
Le serveur d’autorisation DEVRAIT afficher cette URL à l’utilisateur final s’il est fourni. La valeur de ce champ DOIT pointer vers une page web valide. La valeur de ce champ PEUT être internationalisée, comme décrit dans la section 2.2.
- post_logout_redirect_uris: list[str] = []¶
Tableau d’URL fourni par le RP qui PEUT demander que l’agent utilisateur de d’utilisateur final soit redirigé en utilisant le paramètre post_logout_redirect_uri après que la déconnexion ait été réalisée. Ces URL DEVRAIT utiliser le schéma https et PEUVENT contenir des composants tel que le port, chemin et des paramètres de requête ; cependant, ils PEUVENT utiliser le schéma http, à condition que le type du client est confidentiel, tel que défini dans la section 2.1 de OAuth 2.0 [RFC6749], et que l’OP autorise l’utilisation d’URI RP http.
- redirect_uris: list[str] = []¶
Tableau de chaîne de caractères de redirection URI à utiliser pour les flux basés sur les redirections tel que le code d’autorisation et les flux implicites.
La section 2 de OAuth 2.0 [RFC6749] oblige à ce que les clients utilisant des flux avec une redirection DOIVENT enregistrer les valeurs des URI de redirection. Les serveurs d’autorisation acceptant l’enregistrement dynamique pour des flux basés sur les redirections DOIVENT implémenter la gestion de la valeur de cette métadonnéee.
- request_object_encryption_alg: str | None = None¶
JWE [JWE] alg algorithm [JWA] the RP is declaring that it may use for encrypting Request Objects sent to the OP. This parameter SHOULD be included when symmetric encryption will be used, since this signals to the OP that a client_secret value needs to be returned from which the symmetric key will be derived, that might not otherwise be returned. The RP MAY still use other supported encryption algorithms or send unencrypted Request Objects, even when this parameter is present. If both signing and encryption are requested, the Request Object will be signed then encrypted, with the result being a Nested JWT, as defined in [JWT]. The default, if omitted, is that the RP is not declaring whether it might encrypt any Request Objects.
- request_object_encryption_enc: str | None = None¶
JWE enc algorithm [JWA] the RP is declaring that it may use for encrypting Request Objects sent to the OP. If request_object_encryption_alg is specified, the default request_object_encryption_enc value is A128CBC-HS256. When request_object_encryption_enc is included, request_object_encryption_alg MUST also be provided.
- request_object_signing_alg: str | None = None¶
JWS [JWS] alg algorithm [JWA] that MUST be used for signing Request Objects sent to the OP. All Request Objects from this Client MUST be rejected, if not signed with this algorithm. Request Objects are described in Section 6.1 of OpenID Connect Core 1.0 [OpenID.Core]. This algorithm MUST be used both when the Request Object is passed by value (using the request parameter) and when it is passed by reference (using the request_uri parameter). Servers SHOULD support RS256. The value none MAY be used. The default, if omitted, is that any algorithm supported by the OP and the RP MAY be used.
- request_uris: list[str] = []¶
Array of request_uri values that are pre-registered by the RP for use at the OP. These URLs MUST use the https scheme unless the target Request Object is signed in a way that is verifiable by the OP. Servers MAY cache the contents of the files referenced by these URIs and not retrieve them at the time they are used in a request. OPs can require that request_uri values used be pre-registered with the require_request_uri_registration discovery parameter. If the contents of the request file could ever change, these URI values SHOULD include the base64url-encoded SHA-256 hash value of the file contents referenced by the URI as the value of the URI fragment. If the fragment value used for a URI changes, that signals the server that its cached value for that URI with the old fragment value is no longer valid.
- require_auth_time: bool = False¶
Boolean value specifying whether the auth_time Claim in the ID Token is REQUIRED. It is REQUIRED when the value is true. (If this is false, the auth_time Claim can still be dynamically requested as an individual Claim for the ID Token using the claims request parameter described in Section 5.5.1 of OpenID Connect Core 1.0 [OpenID.Core].) If omitted, the default value is false.
- require_signed_request_object: bool = False¶
Indicates where authorization request needs to be protected as Request Object and provided through either request or request_uri parameter.
- response_types: list[str] = []¶
Tableau de chaînes de caractères de type réponse OAuth 2.0 que le client peut utiliser dans un terminal d’autorisation. Ces types de réponse sont définies comme suit :
« code » : le type de réponse du code d’autorisation défini dans OAuth 2.0, section 4.1.
« token » : le type de réponse implicite défini dans OAuth 2.0, section 4.2.
Si le terminal d’autorisation est utilisé par le type d’autorisation, la valeur de ce paramètre DOIT être le même que la valeur du paramètre « response_type » passé au terminal d’autorisation défini dans la définition du type d’autorisation. Les serveurs d’autorisation PEUVENT autoriser d’autres valeurs telles que définies dans le processus d’extension des types d’autorisation tel que décrit dans OAuth 2.0, section 4.5. S’il est omis, la valeur par défaut est que le client utilisera uniquement le type de réponse « code ».
- scope: list[str] = []¶
Chaîne de caractères contenant une liste séparée par des espaces de valeurs de périmètre (comme décrit dans la section 3.3 de OAuth 2.0 [RFC6749]) que le client peut utiliser quand il demande des jetons d’accès.
La sémantique des valeur dans cette liste sont spécifiques au service. Si omis, un serveur d’autorisation PEUT enregistrer un client avec un ensemble de périmètres par défaut.
- sector_identifier_uri: str | None = None¶
URL using the https scheme to be used in calculating Pseudonymous Identifiers by the OP. The URL references a file with a single JSON array of redirect_uri values. Please see Section 5. Providers that use pairwise sub (subject) values SHOULD utilize the sector_identifier_uri value provided in the Subject Identifier calculation for pairwise identifiers.
- software_id: str | None = None¶
Une chaîne de caractère servant d’identifiant unique (par exemple un « Universally Unique Identifier » (UUID)) assigné par le développeur du client ou le fournisseur du logiciel utilisé par les terminaux d’enregistrement identifie le logiciel client pour l’enregistrer dynamiquement.
Contrairement à « client_id », qui est généré par le serveur d’autorisation et DEVRAIT varier selon les instances, « software_id » DEVRAIT rester le même pour toutes les instances du logiciel client. La valeur « software_id » DEVRAIT rester la même après de multiple mises-à-jour ou version du logiciel. La valeur de ce champ n’est pas prévu pour être lisible par des humain et est généralement opaque pour le client et le serveur d’autorisation.
- software_version: str | None = None¶
Une chaîne de caractère identifiant une version pour le logiciel client identifié par « software_id ».
La valeur de « software_version » DEVRAIT changer à chaque mise-à-jour du logiciel client identifié par le même « software_id ». La valeur de ce champ est conçu pour être comparé en utilisant les comparaisons de chaînes et aucune autre sémantique de comparaison n’est définie dans cette spécification. La valeur de ce champ est exclu du périmètre de cette spécification, mais elle n’est pas conçu pour être lisible par des humains et est généralement opaque pour le client et le serveur d’autorisation. La définition de ce qui constitue une mise-à-jour du logiciel client provoquant un changement de cette valeur est spécifique au logiciel lui-même et est exclu du périmètre de cette spécification.
- subject_type: str | None = None¶
subject_type requested for responses to this Client. The subject_types_supported discovery parameter contains a list of the supported subject_type values for the OP. Valid types include pairwise and public.
- token_endpoint_auth_method: str | None = None¶
Indicateur en chaîne de caractères de la méthode d’authentification demandée pour le terminal du jeton. Les valeurs définies par cette spécification sont :
« none » : le client est un client public tel que défini dans OAuth 2.0, section 2.1, et n’a pas de secret client.
« client_secret_post » : le client utilise les paramètres HTTP POST tel que défini dans OAuth 2.0, section 2.3.1.
« client_secret_basic » : le client utilise HTTP Basic tel que défini dans OAuth 2.0, section 2.3.1.
Des valeurs supplémentaires peuvent être défini par le registre « OAuth Token Endpoint Authentication Methods » IANA indiqué dans la section 4.2. Des URI absolues peuvent aussi être utilisées comme valeurs pour ce paramètre sans être enregistrées. Si non définie ou omise, la valeur par défaut est « client_secret_basic », indiquant un schéma « HTTP Basic authentication » comme spécifié dans la section 2.3.1 de OAuth 2.0.
- token_endpoint_auth_signing_alg: str | None = None¶
JWS [JWS] alg algorithm [JWA] that MUST be used for signing the JWT [JWT] used to authenticate the Client at the Token Endpoint for the private_key_jwt and client_secret_jwt authentication methods. All Token Requests using these authentication methods from this Client MUST be rejected, if the JWT is not signed with this algorithm. Servers SHOULD support RS256. The value none MUST NOT be used. The default, if omitted, is that any algorithm supported by the OP and the RP MAY be used.
- tos_uri: str | None = None¶
Chaîne de caractères URL pointant vers un document des conditions d’utilisation du service lisible par des humains pour le client, décrivant la relation contractuelle entre l’utilisateur final et le client que l’utilisateur final accepte quand il autorise le client.
Le serveur d’autorisation DEVRAIT afficher cette URL à l’utilisateur final s’il est fourni. La valeur de ce champ DOIT pointer vers une page web valide. La valeur de ce champ PEUT être internationalisée, comme décrit dans la section 2.2.
- property trusted: bool¶
Trusted clients don’t require to display the consent page to users.
A client is trusted if its client_uri domain matches one of the domains listed in TRUSTED_DOMAINS configuration. Supports: - Exact match: « example.com » matches « example.com » - Subdomain match: « example.com » also matches « sub.example.com » - Wildcard match: « .example.com » matches « example.com » and all its subdomains
- userinfo_encrypted_response_alg: str | None = None¶
JWE [JWE] alg algorithm [JWA] REQUIRED for encrypting UserInfo Responses. If both signing and encryption are requested, the response will be signed then encrypted, with the result being a Nested JWT, as defined in [JWT]. The default, if omitted, is that no encryption is performed.
- userinfo_encrypted_response_enc: str | None = None¶
JWE enc algorithm [JWA] REQUIRED for encrypting UserInfo Responses. If userinfo_encrypted_response_alg is specified, the default userinfo_encrypted_response_enc value is A128CBC-HS256. When userinfo_encrypted_response_enc is included, userinfo_encrypted_response_alg MUST also be provided.
- userinfo_signed_response_alg: str | None = None¶
JWS alg algorithm [JWA] REQUIRED for signing UserInfo Responses. If this is specified, the response will be JWT [JWT] serialized, and signed using JWS. The default, if omitted, is for the UserInfo Response to return the Claims as a UTF-8 [RFC3629] encoded JSON object using the application/json content-type.
- class canaille.oidc.basemodels.Consent[source]¶
Bases :
ModelConsentement utilisateur à long terme à une application.
- class canaille.app.features.Features(app)[source]¶
Bases :
object- property has_account_lockability¶
Indique si les comptes utilisateur peuvent être verrouillés.
Cela dépend de la base de données utilisée par Canaille. C’est uniquement désactivé pour les versions d’OpenLDAP inférieures à 2.6.
- property has_captcha¶
Indicate whether the CAPTCHA feature is enabled.
It is controlled by the
CANAILLE.CAPTCHA_ENABLEDconfiguration parameter, and needs thecaptchaextra package to be installed.
- property has_email_confirmation¶
Indique si la confirmation des adresses email des utilisateurs est activée.
Contrôlé par le paramètre de configuration
CANAILLE.EMAIL_CONFIRMATION.
- property has_fido¶
Indicate whether the FIDO2/WebAuthn authentication factor is enabled.
It requires the
fidoextra package to be installed, a SQL backend, and JavaScript to be enabled. LDAP backend is not supported.
- property has_intruder_lockout¶
Indique si le verrouillage temporaire des comptes utilisateur après échecs de connexion est activé.
Contrôlé par le paramètre de configuration
CANAILLE.ENABLE_INTRUDER_LOCKOUT.
- property has_oidc¶
Indique si la fonctionnalité OIDC est activé.
Cette fonctionnalité est requise pour que Canaille fasse office de serveur d’authentification et d’autorisation pour d’autres applications, et permettre l’authentification unique des utilisateurs. Cette fonctionnalité est contrôlée par le paramètre de configuration
CANAILLE_OIDCainsi que le paquet extraoidc.
- property has_otp¶
Indique si le facteur d’authentification de mot de passe à usage unique est actif.
It is controlled by the
CANAILLE.OTP_METHODconfiguration parameter, needs theotpextra package to be installed, and requires the backend to support OTP attributes.
- property has_password_recovery¶
Indique si la fonctionnalité de réinitialisation de mot de passe est activée.
Cette fonctionnalité est contrôlé par le paramètre de configuration
CANAILLE.ENABLE_PASSWORD_RECOVERY.
- property has_registration¶
Indique si la fonctionnalité d’enregistrement de comptes utilisateurs est activée.
Cette fonctionnalité est contrôlée par le paramètre de configuration
CANAILLE.ENABLE_REGISTRATION.
- property has_scim_client¶
Indique si la fonctionnalité de client SCIM est activée.
Cette fonctionnalité est requise pour faire de Canaille un client de provisionnement. Elle est contrôlée par le paramètre de configuration
CANAILLE_SCIM.ENABLE_CLIENT, et nécessite que l’extrascimsoit installé.
- property has_scim_server¶
Indique si la fonctionnalité de serveur SCIM est activée.
Cette fonctionnalité est requise pour faire de Canaille un serveur de provisionnement. Elle est contrôlée par le paramètre de configuration
CANAILLE_SCIM.ENABLE_SERVER, ainsi que le paquet extrascim.
- property has_smtp¶
Indique si la fonctionnalité d’envoi de mail est activée.
Cette fonctionnalité est requise pour
valider les adresses email des utilsiateurs, envoyer des mots de passe à usage unique par mail etc. Elle est contrôlée par le paramètre de configurationCANAILLE.SMTP.
- property has_trusted_hosts¶
Indicate whether the Flask TRUSTED_HOSTS option is enabled.
It is controlled by the
TRUSTED_HOSTSconfiguration parameter.