PKCE for every clientPKCE pour tous les clientsPKCE لجميع العملاء
Only the Authorization Code flow is enabled, and PKCE is mandatory, so a stolen authorization code is useless without the verifier.
Seul le flux Authorization Code est activé, et PKCE est obligatoire : un code d'autorisation volé ne sert à rien sans le verifier.تدفق Authorization Code وحده مُفعَّل، و PKCE إلزامي: رمز التفويض المسروق لا فائدة منه دون الـ verifier.
No tokens in the browserAucun token dans le navigateurلا رموز في المتصفح
The BFF stores the tokens server-side. The browser only holds an HttpOnly cookie with an opaque session id. The id_token is checked against the SSO's JWKS keys: signature, issuer, audience and expiry.
Le BFF garde les tokens côté serveur. Le navigateur n'a qu'un cookie HttpOnly avec un identifiant de session opaque. L'id_token est vérifié avec les clés JWKS du SSO : signature, émetteur, audience et expiration.يحتفظ الـ BFF بالرموز في جهة الخادم. لا يملك المتصفح سوى cookie من نوع HttpOnly يحمل معرّف جلسة غير قابل للقراءة. ويُتحقَّق من الـ id_token بمفاتيح JWKS الخاصة بالـ SSO: التوقيع، والجهة المُصدِرة، والجمهور، وتاريخ الانتهاء.
Rotation and proactive refreshRotation et renouvellement anticipéالتدوير والتجديد المُسبق
Refresh tokens are rotated on each use. The BFF renews the access token when it expires in under 60 seconds. An invalid refresh token closes the session; a network or SSO outage does not sign the user out.
Les refresh tokens changent à chaque utilisation. Le BFF renouvelle l'access token quand il expire dans moins de 60 secondes. Un refresh token invalide ferme la session ; une panne réseau ou du SSO ne déconnecte pas l'utilisateur.تتغيّر رموز التحديث (refresh tokens) عند كل استعمال. يجدّد الـ BFF رمز الوصول عندما تبقى على انتهائه أقل من 60 ثانية. رمز تحديث غير صالح يُنهي الجلسة؛ أما عطل الشبكة أو الـ SSO فلا يُخرج المستخدم.
Roles per applicationDes rôles par applicationأدوار خاصة بكل تطبيق
Besides the global Admin role, each application declares its own roles: "Employee" in HR and "Employee" in Stock never interfere. An account with no role in an application is refused at sign-in.
En plus du rôle global Admin, chaque application déclare ses propres rôles : « Employé » dans les RH et « Employé » dans le stock ne se mélangent jamais. Un compte sans rôle dans une application est refusé à la connexion.إلى جانب الدور العام Admin، يعرّف كل تطبيق أدواره الخاصة: دور « موظف » في الموارد البشرية ودور « موظف » في المخزون لا يختلطان أبداً. والحساب الذي لا يملك أي دور في تطبيق ما يُرفض عند تسجيل الدخول.
Admin safeguardsGarde-fous d'administrationضمانات الإدارة
The last administrator cannot be removed, an admin cannot lock themselves out, and accounts can be suspended until a date. A disabled or suspended account is checked again before any token is issued.
Impossible de supprimer le dernier administrateur ou de se bloquer soi-même, et les comptes peuvent être suspendus jusqu'à une date. Un compte désactivé ou suspendu est revérifié avant l'émission de chaque token.لا يمكن حذف آخر مشرف ولا أن يُقفل المشرف حسابه بنفسه، ويمكن تعليق الحسابات إلى تاريخ محدد. ويُعاد التحقق من الحساب المعطَّل أو المعلَّق قبل إصدار كل رمز.
Secrets out of the codeLes secrets hors du codeالأسرار خارج الشيفرة
Connection strings, client secrets and the first admin password live in .NET user-secrets on each machine, never in the repository.
Chaînes de connexion, secrets clients et mot de passe du premier admin vivent dans les user-secrets .NET de chaque machine, jamais dans le dépôt.سلاسل الاتصال وأسرار العملاء وكلمة مرور المشرف الأول تُحفظ في user-secrets الخاصة بـ .NET على كل جهاز، وليس في المستودع أبداً.