{"repo":"MicroPyramid/django-mfa","free":true,"listed":false,"github":"https://github.com/MicroPyramid/django-mfa","clone":"git clone https://github.com/MicroPyramid/django-mfa.git","description":"Django-mfa (Multi Factor Authentication) is a simple package to add extra layer of security to your django web application. It gives web app a randomly changing password as an extra protection and supports u2f too","language":"Python","stars":181,"topics":["django","security","mfa","python","2fa","u2f"],"license":"MIT","category":"security-tools","readme_excerpt":"django-mfa Passkeys, security keys, and authenticator apps for Django. Add one app, one middleware, and one URL include — your users get a second factor, and you never touch your login view. --- Most Django projects get multi-factor authentication as a to-do item that never quite gets done, because the usual starting point is a low-level framework and a weekend of writing enrollment views, challenge screens, recovery flows, and rate limiting. django-mfa is the other end of that trade: a finished second-factor feature you mount under a URL prefix. Enrollment pages, challenge pages, recovery codes, the picker for users with more than one method, the middleware that actually enforces it — all included, all overridable. That's a working second factor. Your login view doesn't change — django-mfa listens for Django's own user logged in signal. What your users get --- --- 🔑 Passkeys & security keys WebAuthn/FIDO2 — Touch ID, Windows Hello, Face ID, YubiKey. Usable as a second factor or for full passwordless login, with no username typed. 📱 Authenticator apps Standard TOTP (RFC 6238) — Google Authenticator, 1Password, Aegis, anything. QR code rendered server-side as inline SVG; no third-party service ever sees your users' secrets. 🧾 Recovery codes Ten single-use codes, hashed at rest, shown exactly once. The answer to \"I lost my phone\" that isn't a support ticket. ✉️ Emailed codes Opt-in ( \"email\" in MFA FACTORS ): a one-time code sent to the address on file, for a user who's lost","default_branch":null,"files":null,"tree":[],"storefront":"/r/MicroPyramid","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/MicroPyramid/django-mfa/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}