{"id":21649460,"url":"https://github.com/yokwejuste/django-passkeys","last_synced_at":"2026-02-10T22:05:04.356Z","repository":{"id":263333521,"uuid":"889437019","full_name":"yokwejuste/django-passkeys","owner":"yokwejuste","description":"How to implement passkey auth in Django","archived":false,"fork":false,"pushed_at":"2024-11-18T02:48:46.000Z","size":465,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T18:54:09.641Z","etag":null,"topics":["django","django-passkeys","fido2","passkeys"],"latest_commit_sha":null,"homepage":"https://dj-passkey.yokwejuste.me","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yokwejuste.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-16T11:36:26.000Z","updated_at":"2025-02-06T05:07:28.000Z","dependencies_parsed_at":"2025-01-25T05:32:22.325Z","dependency_job_id":null,"html_url":"https://github.com/yokwejuste/django-passkeys","commit_stats":null,"previous_names":["yokwejuste/django-passkeys"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yokwejuste/django-passkeys","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yokwejuste%2Fdjango-passkeys","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yokwejuste%2Fdjango-passkeys/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yokwejuste%2Fdjango-passkeys/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yokwejuste%2Fdjango-passkeys/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yokwejuste","download_url":"https://codeload.github.com/yokwejuste/django-passkeys/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yokwejuste%2Fdjango-passkeys/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29319305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T20:44:44.282Z","status":"ssl_error","status_checked_at":"2026-02-10T20:44:43.393Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","django-passkeys","fido2","passkeys"],"created_at":"2024-11-25T07:30:56.914Z","updated_at":"2026-02-10T22:05:04.311Z","avatar_url":"https://github.com/yokwejuste.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Django Passkey Authentication\n\nA Django-based web application that implements traditional authentication (username/password) and passkey authentication using the WebAuthn API. Passkey authentication allows users to securely log in without passwords, using biometric or hardware-based authentication methods.\n\n## Features\n\n- **User Registration and Login**:\n  - Traditional username/password registration and login.\n  - Integrated Django's built-in authentication system.\n- **Passkey Authentication**:\n  - Users can register and log in using passkeys, enabling passwordless authentication.\n  - Implements the WebAuthn API for secure authentication.\n- **Secure Development Practices**:\n  - Uses Django's CSRF protection.\n  - Ready for deployment with HTTPS support for secure contexts.\n\n---\n\n## Table of Contents\n\n- [Getting Started](#getting-started)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Endpoints](#endpoints)\n- [Project Structure](#project-structure)\n- [License](#license)\n\n---\n\n## Getting Started\n\nThis guide will help you set up and run the Django Passkey Authentication project on your local machine.\n\n### Prerequisites\n\n- Python 3.8 or later\n- Django 4.0 or later\n- Modern web browser that supports WebAuthn (e.g., Chrome, Firefox, Edge)\n- HTTPS for secure passkey functionality (required for production)\n\n---\n\n## Installation\n\n### 1. Clone the Repository\n\n```bash\ngit https://github.com/yokwejuste/django-passkeys.git django-passkey-auth\ncd django-passkey-auth\n```\n\n### 2. Create a Virtual Environment\n\n```bash\npython -m venv venv\nsource venv/bin/activate  # On Windows: .\\venv\\Scripts\\activate\n```\n\n### 3. Install Dependencies\n\n```bash\npip install -r requirements.txt\n```\n\n### 4. Set Up the Database\n\n```bash\npython manage.py migrate\n```\n\n### 5. Create a Superuser\n\n```bash\npython manage.py createsuperuser\n```\n\n### 6. Run the Development Server\n\n```bash\npython manage.py runserver\n```\n\nAccess the app at `http://localhost:8000`.\n\n---\n\n## Usage\n\n### Register a User\n\n1. Navigate to `/register/`.\n2. Fill out the registration form to create a user account.\n\n### Log In\n\n1. Navigate to `/login/`.\n2. Enter your username and password to log in.\n\n### Register a Passkey\n\n1. Log in with your username and password.\n2. Navigate to `/register-passkey/`.\n3. Click \"Register Passkey\" and follow the prompts to register your passkey.\n\n### Log In with a Passkey\n\n1. Navigate to `/login/`.\n2. Click \"Login with Passkey\" and authenticate using your registered passkey.\n\n---\n\n## Endpoints\n\n```plaintext\n/auth/register/         - Register a new user\n/auth/login/            - Login with username/password\n/auth/logout/           - Log out the current user\n/auth/register-passkey/ - Register a passkey for the user\n/auth/login/ (POST)     - Log in using passkey authentication\n```\n\n---\n\n## Project Structure\n\n```plaintext\ndjango-passkey-auth/\n├── auth_app/\n│   ├── migrations/\n│   ├── templates/\n│   │   ├── auth_app/\n│   │       ├── home.html\n│   │       ├── login.html\n│   │       ├── register.html\n│   ├── forms.py\n│   ├── views.py\n│   ├── urls.py\n├── fido_auth/\n│   ├── migrations/\n│   ├── templates/\n│   │   ├── fido_auth/\n│   │       ├── register_passkey.html\n│   │       ├── login.html\n│   ├── models.py\n│   ├── views.py\n│   ├── urls.py\n├── passkey_auth_project/\n│   ├── settings.py\n│   ├── urls.py\n│   ├── wsgi.py\n│   ├── asgi.py\n├── manage.py\n├── requirements.txt\n├── README.md\n```\n\n---\n\n## Notes for Production\n\n1. **Use HTTPS**: Passkey authentication requires a secure context. Use HTTPS for your deployment.\n2. **Configure Allowed Hosts**: Set `ALLOWED_HOSTS` in `settings.py` to include your domain.\n3. **Secure Cookies**: Ensure CSRF and session cookies are marked as `Secure`.\n\n---\n\n## License\n\nThis project is licensed under the MIT License. See the `LICENSE` file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyokwejuste%2Fdjango-passkeys","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyokwejuste%2Fdjango-passkeys","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyokwejuste%2Fdjango-passkeys/lists"}