Observed since 20 Oct, 19:05 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
adaptiveauth
Advanced Adaptive Authentication Framework with Risk-Based Security
Advanced Adaptive Authentication Framework with Risk-Based Security
Authentication that adapts to risk in real-time, protecting users while maintaining seamless experience
SAGAR AdaptiveAuth is a cutting-edge authentication framework that implements risk-based adaptive authentication. The system dynamically adjusts security requirements based on contextual signals, behavioral biometrics, and real-time risk assessment to protect against modern threats while maintaining optimal user experience.
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ AdaptiveAuth │ │ Backend │
│ Interface │◄──►│ Framework │◄──►│ Services │
│ (HTML/JS) │ │ │ │ (Your App) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
┌─────────────────┐
│ Risk Engine │
│ (Real-time) │
└─────────────────┘
│
┌─────────────────┐
│ Analytics & │
│ Monitoring │
└─────────────────┘
| Level | Name | Description | Requirements |
|---|---|---|---|
| 0 | TRUSTED | Known device/IP/browser | Minimal authentication |
| 1 | BASIC | Standard login | Password only |
| 2 | VERIFIED | Unknown IP | Password + Email verification |
| 3 | SECURE | Unknown device | Password + 2FA |
| 4 | BLOCKED | Suspicious activity | Account locked |
git clone https://github.com/yourusername/adaptiveauth.git
cd adaptiveauth
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt
cp .env.example .env
# Edit .env file with your configuration
python main.py
http://localhost:8080http://localhost:8080/docshttp://localhost:8080/static/index.htmlDefault admin credentials:
admin@adaptiveauth.comAdmin@123⚠️ SECURITY NOTICE: Change these credentials immediately after first login!
POST /api/v1/auth/login - User loginPOST /api/v1/auth/register - User registrationPOST /api/v1/auth/adaptive-login - Adaptive login with risk assessmentPOST /api/v1/auth/refresh - Token refreshPOST /api/v1/auth/logout - User logoutPOST /api/v1/auth/setup-2fa - Setup two-factor authenticationPOST /api/v1/auth/verify-2fa - Verify TOTP codePOST /api/v1/auth/disable-2fa - Disable 2FAGET /api/v1/user/profile - Get user profilePUT /api/v1/user/profile - Update user profilePUT /api/v1/user/change-password - Change passwordGET /api/v1/user/sessions - Get active sessionsGET /api/v1/admin/users - List usersGET /api/v1/admin/statistics - System statisticsGET /api/v1/admin/risk-events - Risk eventsGET /api/v1/admin/anomalies - Anomaly patternsGET /api/v1/admin/framework-statistics - Framework usage statisticsThe framework evaluates multiple risk factors:
Run the test suite:
python -m pytest test_framework.py
# Build and run with Docker
docker-compose up --build
# Or build standalone image
docker build -t adaptiveauth .
docker run -p 8080:8080 adaptiveauth
# Use the deployment script
./scripts/deploy.sh # Linux/macOS
# or
scripts\deploy.bat # Windows
We welcome contributions! Please read our CONTRIBUTING.md for guidelines.
# Fork the repository
git clone https://github.com/yourusername/adaptiveauth.git
cd adaptiveauth
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Install development dependencies
pip install -r requirements-dev.txt
# Run tests
python -m pytest
This project is licensed under the MIT License - see the LICENSE file for details.
/docsSAGAR AdaptiveAuth Framework - Making authentication smarter and more secure, one adaptive login at a time.
⭐ Star this repository if you found it helpful! 🐛 Report an issue 💡 Request a feature
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
fastapiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | fastapi>=0.104.0 | runtime |
uvicornEnvironment{
"extras": "standard",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | uvicorn[standard]>=0.24.0 | runtime |
sqlalchemyEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | sqlalchemy>=2.0.0 | runtime |
pydanticEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pydantic>=2.0.0 | runtime |
pydantic-settingsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pydantic-settings>=2.0.0 | runtime |
python-joseEnvironment{
"extras": "cryptography",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | python-jose[cryptography]>=3.3.0 | runtime |
passlibEnvironment{
"extras": "bcrypt",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | passlib[bcrypt]>=1.7.4 | runtime |
bcryptEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | bcrypt>=4.1.2 | runtime |
python-multipartEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | python-multipart>=0.0.6 | runtime |
pyotpEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pyotp>=2.9.0 | runtime |
qrcodeEnvironment{
"extras": "pil",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | qrcode[pil]>=7.4.2 | runtime |
fastapi-mailEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | fastapi-mail>=1.4.1 | runtime |
httpxEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | httpx>=0.25.0 | runtime |
python-dateutilEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | python-dateutil>=2.8.2 | runtime |
user-agentsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | user-agents>=2.2.0 | runtime |
aiofilesEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | aiofiles>=23.2.1 | runtime |
twilioEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | twilio>=8.10.0 | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"development\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest>=7.0.0; extra == "development" | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"development\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.21.0; extra == "development" | runtime |
blackEnvironment{
"extras": "",
"marker": "extra == \"development\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | black>=23.0.0; extra == "development" | runtime |
flake8Environment{
"extras": "",
"marker": "extra == \"development\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | flake8>=6.0.0; extra == "development" | runtime |
mypyEnvironment{
"extras": "",
"marker": "extra == \"development\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | mypy>=1.0.0; extra == "development" | runtime |
isortEnvironment{
"extras": "",
"marker": "extra == \"development\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | isort>=5.10.0; extra == "development" | runtime |
pre-commitEnvironment{
"extras": "",
"marker": "extra == \"development\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pre-commit>=3.0.0; extra == "development" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"testing\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest>=7.0.0; extra == "testing" | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"testing\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.21.0; extra == "testing" | runtime |
pytest-covEnvironment{
"extras": "",
"marker": "extra == \"testing\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest-cov>=4.0.0; extra == "testing" | runtime |
coverageEnvironment{
"extras": "",
"marker": "extra == \"testing\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | coverage>=7.0.0; extra == "testing" | runtime |
mkdocsEnvironment{
"extras": "",
"marker": "extra == \"docs\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | mkdocs>=1.4.0; extra == "docs" | runtime |
mkdocs-materialEnvironment{
"extras": "",
"marker": "extra == \"docs\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | mkdocs-material>=9.0.0; extra == "docs" | runtime |
mkdocstringsEnvironment{
"extras": "",
"marker": "extra == \"docs\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | mkdocstrings>=0.20.0; extra == "docs" | runtime |
mkdocstrings-pythonEnvironment{
"extras": "",
"marker": "extra == \"docs\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | mkdocstrings-python>=1.1.0; extra == "docs" | runtime |
banditEnvironment{
"extras": "",
"marker": "extra == \"security\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | bandit>=1.7.0; extra == "security" | runtime |
safetyEnvironment{
"extras": "",
"marker": "extra == \"security\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | safety>=2.0.0; extra == "security" | runtime |
bdist_wheel · 65.83 KB · Python py3
sdist · 59.97 KB · Python source
Observed since 20 Oct, 19:05 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:afb4178f67a6e42d38ef7f3e5c2ffbfb8987acb2269fbfdaf3da7aaf9101cbf5