Aller au contenu

Référence des Paramètres

Table des Matières - Priorité des Paramètres - Mode de Sécurité Raccourci (Shortcut Secure Mode) (1) - Paramètres Essentiels (Core) (6) - JWT (9) - Authentification à Deux Facteurs (TOTP) (3) - OTP (Vérification E-mail / SMS) (4) - Politique de Mot de Passe (9) - Limitation de Débit et Verrouillage de Compte (5) - Limites de Sessions et d'Appareils (6) - Multi-Application (3) - CORS (8) - En-têtes de Sécurité (2) - Connexion Sociale (OAuth2) (11) - WebAuthn / Passkeys (FIDO2) (4) - Vérification des Mots de Passe Compromis (HaveIBeenPwned) (2) - Lien Magique (Magic Link / Sans Mot de Passe) (3) - Backends SMS (9) - Backends E-mail (3) - Journaux d'Audit (4) - Organisations (B2B) (8) - Modèles Interchangeables (Swappable Models) (4)

Tous les paramètres de Tenxyte sont préfixés par TENXYTE_ et possèdent des valeurs par défaut raisonnables. Surchargez-les dans le fichier settings.py de votre projet Django. Le DjangoSettingsProvider de l'adaptateur Django lit automatiquement ces valeurs et les transmet au Core agnostique — aucune configuration supplémentaire n'est requise.


Priorité des Paramètres

TENXYTE_SHORTCUT_SECURE_MODE applique une combinaison prédéfinie de paramètres de sécurité en une seule ligne. Les paramètres individuels ont toujours la priorité sur le préréglage.

Ordre de priorité : TENXYTE_* explicite dans settings.py > préréglage > valeur par défaut

TENXYTE_SHORTCUT_SECURE_MODE = 'medium'  # 'development' | 'medium' | 'robust'
Mode Cas d'utilisation visé
development Prototypes, développement local, outils internes
medium SaaS public, applications B2C, startups
robust Fintech, santé, B2B, strictement conforme au RGPD

Valeurs des préréglages

Paramètre development medium robust
TENXYTE_JWT_ACCESS_TOKEN_LIFETIME 3600 (1h) 900 (15min) 300 (5min)
TENXYTE_JWT_REFRESH_TOKEN_LIFETIME 2592000 (30j) 604800 (7j) 86400 (1j)
TENXYTE_REFRESH_TOKEN_ROTATION False True True
TENXYTE_MAX_LOGIN_ATTEMPTS 10 5 3
TENXYTE_LOCKOUT_DURATION_MINUTES 15 30 60
TENXYTE_PASSWORD_HISTORY_ENABLED False True True
TENXYTE_PASSWORD_HISTORY_COUNT 0 5 12
TENXYTE_BREACH_CHECK_ENABLED False True True
TENXYTE_BREACH_CHECK_REJECT False True True
TENXYTE_MAGIC_LINK_ENABLED False True False
TENXYTE_WEBAUTHN_ENABLED False False True
TENXYTE_AUDIT_LOGGING_ENABLED False True True
TENXYTE_DEVICE_LIMIT_ENABLED False True True
TENXYTE_DEFAULT_MAX_DEVICES 5 2
TENXYTE_DEVICE_LIMIT_ACTION 'deny'
TENXYTE_SESSION_LIMIT_ENABLED False True True
TENXYTE_DEFAULT_MAX_SESSIONS 1
TENXYTE_CORS_ALLOW_ALL_ORIGINS False False False
TENXYTE_SECURITY_HEADERS_ENABLED False True True

Les paramètres marqués ne sont pas définis par le préréglage et reprennent leurs valeurs par défaut individuelles.

Vous pouvez surcharger n'importe quelle valeur de préréglage individuellement :

TENXYTE_SHORTCUT_SECURE_MODE = 'robust'
TENXYTE_WEBAUTHN_ENABLED = False  # désactiver les passkeys malgré le mode robust
TENXYTE_JWT_ACCESS_TOKEN_LIFETIME = 600  # 10min au lieu de 5min


Paramètres Essentiels (Core Settings)

Paramètre Défaut Description
TENXYTE_BASE_URL 'http://127.0.0.1:8000' URL de base de l'API.
TENXYTE_API_VERSION 1 Numéro de version de l'API.
TENXYTE_API_PREFIX '/api/v1' Préfixe matériel global de l'API.
TENXYTE_TRUSTED_PROXIES [] Liste des IP/CIDR de serveurs mandataires de confiance pour la validation X-Forwarded-For.
TENXYTE_NUM_PROXIES 0 Nombre de proxys amont de confiance (ex: Cloudflare + Nginx = 2).
TENXYTE_VERBOSE_ERRORS False Affiche les détails complets des erreurs (ex: rôle exact manquant). Désactivez en production.

JWT

Paramètre Défaut Description
TENXYTE_JWT_SECRET_KEY None (Requis) Clé secrète dédiée pour la signature JWT (HS256) ou clé privée (RS256/EdDSA). Doit être définie explicitement en production. En mode DEBUG, une clé éphémère est auto-générée.
TENXYTE_JWT_ALGORITHM 'HS256' Algorithme de signature JWT. En production, utilisez RS256 ou EdDSA — les algorithmes symétriques nécessitent de partager le secret de signature entre toutes les instances. Un SecurityWarning est émis si HS256 est utilisé.
TENXYTE_JWT_PRIVATE_KEY None Clé privée RSA/ECDSA pour la signature JWT (requise pour les algorithmes RS/PS/ES).
TENXYTE_JWT_PUBLIC_KEY None Clé publique RSA/ECDSA pour la vérification JWT (requise pour les algorithmes RS/PS/ES).
TENXYTE_JWT_ACCESS_TOKEN_LIFETIME 900 Durée de vie du jeton d'accès en secondes (15 minutes).
TENXYTE_JWT_REFRESH_TOKEN_LIFETIME 604800 Durée de vie du jeton de rafraîchissement en secondes (7 jours).
TENXYTE_JWT_ISSUER 'tenxyte' Valeur du claim iss. Vérifié à chaque décodage de jeton.
TENXYTE_JWT_AUDIENCE None Valeur du claim aud. Définissez-le pour activer la vérification d'audience (ex: 'monapp').
TENXYTE_JWT_AUTH_ENABLED True Active/désactive l'authentification JWT.
TENXYTE_TOKEN_BLACKLIST_ENABLED True Met les jetons d'accès sur liste noire lors de la déconnexion.
TENXYTE_REFRESH_TOKEN_ROTATION True Délivre un nouveau jeton de rafraîchissement à chaque rafraîchissement (invalide l'ancien).
TENXYTE_JWT_PREVIOUS_SECRET_KEY None Ancienne clé de signature pour une rotation gracieuse. Les jetons signés avec cette clé sont encore acceptés pendant la transition.
TENXYTE_JWT_PREVIOUS_PUBLIC_KEY None Ancienne clé publique pour la rotation RS256/EdDSA.
Paramètre Défaut Description
TENXYTE_REFRESH_TOKEN_COOKIE_ENABLED False Opt-in. Transporte le jeton de rafraîchissement dans un cookie HttpOnly; Secure; SameSite au lieu du corps JSON.
TENXYTE_REFRESH_TOKEN_COOKIE_NAME 'tenxyte_refresh' Nom du cookie.
TENXYTE_REFRESH_TOKEN_COOKIE_SAMESITE 'Strict' Attribut SameSite ('Strict', 'Lax' ou 'None').
TENXYTE_REFRESH_TOKEN_COOKIE_PATH '/api/v1/auth/' Portée Path du cookie — envoyé uniquement aux endpoints d'authentification.

Authentification à Deux Facteurs (TOTP)

Paramètre Défaut Description
TENXYTE_TOTP_ISSUER 'MyApp' Nom de l'émetteur affiché dans les applications d'authentification (Google Authenticator, Authy).
TENXYTE_TOTP_VALID_WINDOW 1 Nombre de périodes de 30s acceptées avant/après l'heure actuelle.
TENXYTE_BACKUP_CODES_COUNT 10 Nombre de codes de secours générés lors de la configuration 2FA.

OTP (Vérification E-mail / SMS)

Paramètre Défaut Description
TENXYTE_OTP_LENGTH 6 Longueur des codes OTP.
TENXYTE_OTP_EMAIL_VALIDITY 15 Validité de l'OTP par e-mail en minutes.
TENXYTE_OTP_PHONE_VALIDITY 10 Validité de l'OTP par SMS en minutes.
TENXYTE_OTP_MAX_ATTEMPTS 5 Nombre maximal de tentatives OTP échouées avant invalidation.

Politique de Mot de Passe

Paramètre Défaut Description
TENXYTE_PASSWORD_MIN_LENGTH 8 Longueur minimale du mot de passe.
TENXYTE_PASSWORD_MAX_LENGTH 128 Longueur maximale du mot de passe.
TENXYTE_BCRYPT_ROUNDS 12 Facteur de travail pour le hachage bcrypt.
TENXYTE_PASSWORD_REQUIRE_UPPERCASE True Exige au moins une lettre majuscule.
TENXYTE_PASSWORD_REQUIRE_LOWERCASE True Exige au moins une lettre minuscule.
TENXYTE_PASSWORD_REQUIRE_DIGIT True Exige au moins un chiffre.
TENXYTE_PASSWORD_REQUIRE_SPECIAL True Exige au moins un caractère spécial.
TENXYTE_PASSWORD_HISTORY_ENABLED True Empêche la réutilisation des mots de passe récents.
TENXYTE_PASSWORD_HISTORY_COUNT 5 Nombre de mots de passe précédents à vérifier.
TENXYTE_PASSWORD_MIN_LENGTH_NO_MFA 0 NIST SP 800-63B. Longueur minimale pour les comptes sans 2FA. Mettre à 15 pour la conformité NIST. 0 = désactivé.

Limitation de Débit et Verrouillage de Compte

Paramètre Défaut Description
TENXYTE_RATE_LIMITING_ENABLED True Active la limitation de débit sur les points de terminaison sensibles.
TENXYTE_MAX_LOGIN_ATTEMPTS 5 Tentatives échouées avant le verrouillage du compte.
TENXYTE_LOCKOUT_DURATION_MINUTES 30 Durée de base du verrouillage en minutes.
TENXYTE_RATE_LIMIT_WINDOW_MINUTES 15 Fenêtre temporelle pour le comptage des tentatives de connexion.
TENXYTE_ACCOUNT_LOCKOUT_ENABLED True Active/désactive le verrouillage du compte après échecs.
TENXYTE_LOCKOUT_ESCALATION_ENABLED True Verrouillage exponentiel. Chaque verrouillage consécutif double la durée : min(base × 2^(n-1), max).
TENXYTE_LOCKOUT_MAX_DURATION_MINUTES 1440 Durée maximale de verrouillage en minutes (24h).

Règles de Limitation Personnalisées

Appliquez des limites de débit à n'importe quelle URL sans créer de classe de limitation personnalisée :

TENXYTE_SIMPLE_THROTTLE_RULES = {
    '/api/v1/products/': '100/hour',
    '/api/v1/search/': '30/min',
    '/api/v1/upload/': '5/hour',
    '/api/v1/health/$': '1000/min',  # avec $ = correspondance exacte
}

Nécessite l'ajout à la configuration DRF :

REST_FRAMEWORK = {
    'DEFAULT_THROTTLE_CLASSES': [
        'tenxyte.throttles.SimpleThrottleRule',
    ],
}


Limites de Sessions et d'Appareils

Paramètre Défaut Description
TENXYTE_SESSION_LIMIT_ENABLED True Active les limites de sessions simultanées.
TENXYTE_DEFAULT_MAX_SESSIONS 1 Nombre maximal de sessions simultanées par utilisateur.
TENXYTE_DEFAULT_SESSION_LIMIT_ACTION 'revoke_oldest' Action lorsque la limite est dépassée : 'deny' ou 'revoke_oldest'.
TENXYTE_DEVICE_LIMIT_ENABLED True Active les limites d'appareils uniques.
TENXYTE_DEFAULT_MAX_DEVICES 1 Nombre maximal d'appareils uniques par utilisateur.
TENXYTE_DEVICE_LIMIT_ACTION 'deny' Action lorsque la limite d'appareils est dépassée : 'deny' ou 'revoke_oldest'.

Surcharges par utilisateur : définissez user.max_sessions ou user.max_devices pour outrepasser la valeur par défaut.


Multi-Application

Paramètre Défaut Description
TENXYTE_APPLICATION_AUTH_ENABLED True Requiert les en-têtes X-Access-Key / X-Access-Secret.
TENXYTE_EXEMPT_PATHS ['/admin/', '/api/v1/health/', '/api/v1/docs/'] Chemins exemptés de l'authentification d'application (correspondance de préfixe).
TENXYTE_EXACT_EXEMPT_PATHS ['/api/v1/'] Chemins exemptés de l'authentification d'application (correspondance exacte).

CORS

Paramètre Défaut Description
TENXYTE_CORS_ENABLED True Active le middleware CORS intégré.
TENXYTE_CORS_ALLOW_ALL_ORIGINS False Autorise toutes les origines (dangereux en production).
TENXYTE_CORS_ALLOWED_ORIGINS [] Liste des origines autorisées.
TENXYTE_CORS_ALLOW_CREDENTIALS True Autorise les identifiants (cookies, Authorization).
TENXYTE_CORS_ALLOWED_METHODS ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'] Méthodes HTTP autorisées.
TENXYTE_CORS_ALLOWED_HEADERS Voir ci-dessous En-têtes de requête autorisés.
TENXYTE_CORS_EXPOSE_HEADERS [] En-têtes exposés au client.
TENXYTE_CORS_MAX_AGE 86400 Durée du cache de pré-vérification (preflight) en secondes.

En-têtes autorisés par défaut : Accept, Accept-Language, Content-Type, Authorization, X-Access-Key, X-Access-Secret, X-Requested-With.


En-têtes de Sécurité

Paramètre Défaut Description
TENXYTE_SECURITY_HEADERS_ENABLED False Ajoute des en-têtes de sécurité à toutes les réponses.
TENXYTE_SECURITY_HEADERS Voir ci-dessous Dictionnaire nom d'en-tête → valeur.

En-têtes par défaut :

{
    'X-Content-Type-Options': 'nosniff',
    'X-XSS-Protection': '1; mode=block',
    'X-Frame-Options': 'DENY',
    'Referrer-Policy': 'strict-origin-when-cross-origin',
    'Strict-Transport-Security': 'max-age=31536000; includeSubDomains',
    'Content-Security-Policy': "default-src 'none'; frame-ancestors 'none'",
    'Cross-Origin-Resource-Policy': 'same-origin',
    'Cross-Origin-Opener-Policy': 'same-origin',
    'Permissions-Policy': 'camera=(), microphone=(), geolocation=()',
}


Connexion Sociale (OAuth2)

Paramètre Défaut Description
TENXYTE_SOCIAL_PROVIDERS ['google', 'github', 'microsoft', 'facebook'] Fournisseurs OAuth2 activés.
TENXYTE_SOCIAL_AUTO_MERGE_ACCOUNTS False Fusionne automatiquement la connexion sociale avec un compte e-mail existant.
TENXYTE_SOCIAL_REQUIRE_VERIFIED_EMAIL True Rejette la connexion sociale si l'e-mail n'est pas vérifié par le fournisseur.
GOOGLE_CLIENT_ID '' Identifiant client Google OAuth.
GOOGLE_CLIENT_SECRET '' Secret client Google OAuth.
GITHUB_CLIENT_ID '' Identifiant client GitHub OAuth App.
GITHUB_CLIENT_SECRET '' Secret client GitHub OAuth App.
MICROSOFT_CLIENT_ID '' Application (client) ID de Microsoft Azure AD.
MICROSOFT_CLIENT_SECRET '' Secret client Microsoft Azure AD.
FACEBOOK_APP_ID '' Identifiant d'application Facebook.
FACEBOOK_APP_SECRET '' Secret d'application Facebook.

Scopes OAuth par Fournisseur

Paramètre Défaut Description
TENXYTE_SOCIAL_GOOGLE_SCOPES 'openid email profile' Scopes OAuth demandés à Google.
TENXYTE_SOCIAL_GITHUB_SCOPES 'read:user user:email' Scopes OAuth demandés à GitHub.
TENXYTE_SOCIAL_MICROSOFT_SCOPES 'openid email profile' Scopes OAuth demandés à Microsoft.
TENXYTE_SOCIAL_FACEBOOK_SCOPES 'email,public_profile' Scopes OAuth demandés à Facebook.

Point de terminaison : POST /api/v1/auth/social/<provider>/ — où <provider> est google, github, microsoft ou facebook.


WebAuthn / Passkeys (FIDO2)

Paramètre Défaut Description
TENXYTE_WEBAUTHN_ENABLED False Active l'authentification sans mot de passe via Passkeys.
TENXYTE_WEBAUTHN_RP_ID 'localhost' ID de la partie fiduciante — doit correspondre à votre domaine (ex : 'yourapp.com').
TENXYTE_WEBAUTHN_RP_NAME 'Tenxyte' Nom affiché dans l'invite Passkey du navigateur.
TENXYTE_WEBAUTHN_CHALLENGE_EXPIRY_SECONDS 300 Validité du défi WebAuthn en secondes.

Nécessite : pip install py-webauthn


Vérification des Mots de Passe Compromis (HaveIBeenPwned)

Paramètre Défaut Description
TENXYTE_BREACH_CHECK_ENABLED False Vérifie les mots de passe par rapport à l'API HIBP Pwned Passwords.
TENXYTE_BREACH_CHECK_REJECT True Si True, rejette les mots de passe compromis (HTTP 400). Si False, avertit uniquement dans les journaux.

Utilise l'anonymisation k — seuls les 5 premiers caractères du hachage SHA-1 sont envoyés à l'API.


Paramètre Défaut Description
TENXYTE_MAGIC_LINK_ENABLED False Active la connexion sans mot de passe via des liens magiques par e-mail.
TENXYTE_MAGIC_LINK_EXPIRY_MINUTES 15 Validité du lien magique en minutes.
TENXYTE_MAGIC_LINK_BASE_URL 'https://yourapp.com' URL de base utilisée pour construire le lien de vérification envoyé par e-mail.

Backends SMS

Paramètre Défaut Description
TENXYTE_SMS_BACKEND 'tenxyte.backends.sms.ConsoleBackend' Classe du backend SMS.
TENXYTE_SMS_ENABLED False Active l'envoi réel de SMS.
TENXYTE_SMS_DEBUG True Enregistre les SMS dans les journaux au lieu de les envoyer.
TWILIO_ACCOUNT_SID '' SID du compte Twilio (si utilisation du backend Twilio).
TWILIO_AUTH_TOKEN '' Jeton d'authentification Twilio.
TWILIO_PHONE_NUMBER '' Numéro de téléphone expéditeur Twilio.
NGH_API_KEY '' Clé API NGH Corp (si utilisation du backend NGH).
NGH_API_SECRET '' Secret API NGH Corp.
NGH_SENDER_ID '' Identifiant d'expéditeur NGH Corp.

Backends SMS disponibles : - tenxyte.backends.sms.ConsoleBackend — affiche dans la console (développement) - tenxyte.backends.sms.TwilioBackend — envoie via Twilio - tenxyte.backends.sms.NGHBackend — envoie via NGH Corp


Backends E-mail

Paramètre Défaut Description
TENXYTE_EMAIL_BACKEND 'tenxyte.backends.email.DjangoBackend' Classe du backend e-mail.
SENDGRID_API_KEY '' Clé API SendGrid (si utilisation du backend SendGrid).
SENDGRID_FROM_EMAIL 'noreply@example.com' E-mail expéditeur SendGrid.

Backends e-mail disponibles : - tenxyte.backends.email.DjangoBackend — utilise le EMAIL_BACKEND de Django (recommandé) - tenxyte.backends.email.ConsoleBackend — affiche dans la console (développement) - tenxyte.backends.email.SendGridBackend — envoie via SendGrid (hérité ; préférez django-anymail)


Journaux d'Audit

Paramètre Défaut Description
TENXYTE_AUDIT_LOGGING_ENABLED True Active l'enregistrement des journaux d'audit.
TENXYTE_AUDIT_LOG_RETENTION_DAYS 90 Jours de conservation avant la purge automatique (0 = infini).
TENXYTE_PURGE_IP_ON_DELETION False Purge l'IP des journaux lorsqu'un compte est supprimé.
TENXYTE_AGENT_ACTION_RETENTION_DAYS 7 Jours de conservation pour les actions d'Agent en attente (HITL).

Organisations (B2B)

Paramètre Défaut Description
TENXYTE_ORGANIZATIONS_ENABLED False Active la fonctionnalité Organisations (optionnel).
TENXYTE_CREATE_DEFAULT_ORGANIZATION True Crée une organisation par défaut pour les nouveaux utilisateurs.
TENXYTE_ORG_ROLE_INHERITANCE True Les rôles se propagent dans la hiérarchie de l'organisation.
TENXYTE_ORG_MAX_DEPTH 5 Profondeur maximale de la hiérarchie des organisations.
TENXYTE_ORG_MAX_MEMBERS 0 Nombre maximal de membres par organisation (0 = illimité).
TENXYTE_ORGANIZATION_MODEL 'tenxyte.Organization' Modèle Organization interchangeable.
TENXYTE_ORGANIZATION_ROLE_MODEL 'tenxyte.OrganizationRole' Modèle OrganizationRole interchangeable.
TENXYTE_ORGANIZATION_MEMBERSHIP_MODEL 'tenxyte.OrganizationMembership' Modèle OrganizationMembership interchangeable.

Modèles Interchangeables (Swappable Models)

Remplacez n'importe quel modèle core par le vôtre en pointant vers une classe personnalisée qui étend la base Abstract* correspondante.

Paramètre Défaut Description
TENXYTE_USER_MODEL 'tenxyte.User' Modèle User interchangeable. Définissez également AUTH_USER_MODEL de Django.
TENXYTE_APPLICATION_MODEL 'tenxyte.Application' Modèle Application interchangeable (authentification multi-app).
TENXYTE_ROLE_MODEL 'tenxyte.Role' Modèle Role interchangeable (RBAC).
TENXYTE_PERMISSION_MODEL 'tenxyte.Permission' Modèle Permission interchangeable (RBAC).

Exemple — modèle User personnalisé :

# myapp/models.py
from tenxyte.models import AbstractUser

class CustomUser(AbstractUser):
    bio = models.TextField(blank=True)

    class Meta(AbstractUser.Meta):
        db_table = 'custom_users'

# settings.py
TENXYTE_USER_MODEL = 'myapp.CustomUser'
AUTH_USER_MODEL = 'myapp.CustomUser'  # requis par Django

Exemple — modèle Application personnalisé :

# myapp/models.py
from tenxyte.models import AbstractApplication

class CustomApplication(AbstractApplication):
    webhook_url = models.URLField(blank=True)

    class Meta(AbstractApplication.Meta):
        db_table = 'custom_applications'

# settings.py
TENXYTE_APPLICATION_MODEL = 'myapp.CustomApplication'