{"id":19411620,"url":"https://github.com/duosecurity/duo_universal_python","last_synced_at":"2025-04-05T08:04:07.481Z","repository":{"id":37920471,"uuid":"304481388","full_name":"duosecurity/duo_universal_python","owner":"duosecurity","description":"Duo OIDC-based two-factor authentication for Python web applications","archived":false,"fork":false,"pushed_at":"2025-03-20T20:55:18.000Z","size":111,"stargazers_count":25,"open_issues_count":2,"forks_count":22,"subscribers_count":31,"default_branch":"main","last_synced_at":"2025-03-29T07:02:59.321Z","etag":null,"topics":["duo","mfa","python"],"latest_commit_sha":null,"homepage":"https://duo.com/docs/duoweb","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/duosecurity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-16T00:45:23.000Z","updated_at":"2025-03-20T20:54:05.000Z","dependencies_parsed_at":"2025-02-02T14:11:14.307Z","dependency_job_id":null,"html_url":"https://github.com/duosecurity/duo_universal_python","commit_stats":{"total_commits":52,"total_committers":7,"mean_commits":7.428571428571429,"dds":0.5961538461538461,"last_synced_commit":"6349ec9afb54ae9e5ba2718e74f13dd5a3d32422"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duosecurity%2Fduo_universal_python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duosecurity%2Fduo_universal_python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duosecurity%2Fduo_universal_python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duosecurity%2Fduo_universal_python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/duosecurity","download_url":"https://codeload.github.com/duosecurity/duo_universal_python/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305932,"owners_count":20917208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["duo","mfa","python"],"created_at":"2024-11-10T12:22:23.401Z","updated_at":"2025-04-05T08:04:07.457Z","avatar_url":"https://github.com/duosecurity.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Duo Universal Python SDK\n\n[![Build Status](https://github.com/duosecurity/duo_universal_python/workflows/Python%20CI/badge.svg)](https://github.com/duosecurity/duo_universal_python/actions)\n[![Issues](https://img.shields.io/github/issues/duosecurity/duo_universal_python)](https://github.com/duosecurity/duo_universal_python/issues)\n[![Forks](https://img.shields.io/github/forks/duosecurity/duo_universal_python)](https://github.com/duosecurity/duo_universal_python/network/members)\n[![Stars](https://img.shields.io/github/stars/duosecurity/duo_universal_python)](https://github.com/duosecurity/duo_universal_python/stargazers)\n[![License](https://img.shields.io/badge/License-View%20License-orange)](https://github.com/duosecurity/duo_universal_python/blob/master/LICENSE)\n\n\nThis SDK allows a web developer to quickly add Duo's interactive, self-service, two-factor authentication to any Python3 web login form. Only Python 3 is supported.\n\n## Tested Against Python Versions:\n- 3.7\n- 3.8\n- 3.9\n- 3.10\n- 3.11\n\n## TLS 1.2 and 1.3 Support\n\nDuo_universal_python uses Python's ssl module and OpenSSL for TLS operations. Python versions 2.7 (and higher) and 3.5 (and higher) have both TLS 1.2 and TLS 1.3 support.\n\n## What's here:\n* `duo_universal` - The Python Duo SDK for interacting with the Duo Universal Prompt\n* `demo` - An example web application with Duo integrated\n* `tests` - Test cases\n\n## Getting Started\nTo use the SDK in your existing development environment, install it from pypi (https://pypi.org/project/duo_universal).\n```\npip3 install duo_universal\n```\nOnce it's installed, see our developer documentation at https://duo.com/docs/duoweb and `demo/app.py` in this repo for guidance on integrating Duo 2FA into your web application.\n\n## Contribute\nTo contribute, fork this repo and make a pull request with your changes when they're ready. \n\nIf you're not already working from a dedicated development environment, it's recommended a virtual environment is used. Assuming a virtual environment named `env`, create and activate the environment:\n```\npython3 -m venv env\nsource env/bin/activate\n```\n\nBuild and install the SDK from source:\n```\npip3 install -r requirements.txt\npip3 install .\n```\n\n## Tests\nInstall the test requirements:\n```\ncd tests\npip3 install -r requirements.txt\n```\nThen run tests from the `test` directory:\n```\n# Run an individual test file\npython3 \u003ctest_name\u003e.py\n\n# Run all tests with unittest\npython3 -m unittest\n```\n\n## Lint\n```\nflake8\n```\n\n## Support\n\nPlease report any bugs, feature requests, or issues to us directly at support@duosecurity.com.\n\nThank you for using Duo!\n\nhttps://duo.com/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduosecurity%2Fduo_universal_python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduosecurity%2Fduo_universal_python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduosecurity%2Fduo_universal_python/lists"}