{"id":20172812,"url":"https://github.com/everysoftware/fastid","last_synced_at":"2025-10-28T14:50:38.864Z","repository":{"id":241867093,"uuid":"808068678","full_name":"everysoftware/fastid","owner":"everysoftware","description":"FastID is a scalable identity management SaaS based on OAuth 2.0 \u0026 OpenID Connect","archived":false,"fork":false,"pushed_at":"2025-04-07T12:31:22.000Z","size":7963,"stargazers_count":12,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-10T03:15:18.105Z","etag":null,"topics":["fastapi","google","keycloak","oauth2","oidc","sso","telegram","yandex"],"latest_commit_sha":null,"homepage":"","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/everysoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":"https://boosty.to/everysoftware"}},"created_at":"2024-05-30T10:14:13.000Z","updated_at":"2025-04-02T14:34:57.000Z","dependencies_parsed_at":"2024-08-07T20:24:47.318Z","dependency_job_id":"063fdd6a-aaa9-42a5-8a12-e5bfce773fd7","html_url":"https://github.com/everysoftware/fastid","commit_stats":null,"previous_names":["everysoftware/fastapi-template","everysoftware/fastapi-auth"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everysoftware%2Ffastid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everysoftware%2Ffastid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everysoftware%2Ffastid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everysoftware%2Ffastid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/everysoftware","download_url":"https://codeload.github.com/everysoftware/fastid/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248148243,"owners_count":21055548,"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":["fastapi","google","keycloak","oauth2","oidc","sso","telegram","yandex"],"created_at":"2024-11-14T01:32:25.180Z","updated_at":"2025-10-28T14:50:38.843Z","avatar_url":"https://github.com/everysoftware.png","language":"Python","funding_links":["https://boosty.to/everysoftware"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/everysoftware/fastid\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/everysoftware/fastid/master/img/logo_text.png\" alt=\"FastID\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cem\u003eFastID authentication platform, high security, lightning fast, easy-to-use, customizable.\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/everysoftware/fastid/actions/workflows/test.yml\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://github.com/everysoftware/fastid/actions/workflows/test.yml/badge.svg\" alt=\"Test\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://coverage-badge.samuelcolvin.workers.dev/redirect/everysoftware/fastid\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://coverage-badge.samuelcolvin.workers.dev/everysoftware/fastid.svg\" alt=\"Coverage\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/everysoftware/fastid/actions/workflows/codeql.yml\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://github.com/everysoftware/fastid/actions/workflows/codeql.yml/badge.svg\" alt=\"CodeQL\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/everysoftware/fastid/actions/workflows/test.yml\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/everysoftware/fastid/test.yml?label=Bandit+Scan\" alt=\"Bandit\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://img.shields.io/github/license/everysoftware/fastid.png\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/license/everysoftware/fastid.png\" alt=\"License\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n**Live Demo:** [https://fastid.croce.ru](https://fastid.croce.ru)\n\n**Documentation:** [https://everysoftware.github.io/fastid](https://everysoftware.github.io/fastid)\n\n**Source Code:** [https://github.com/everysoftware/fastid](https://github.com/everysoftware/fastid)\n\n---\n\n## Features\n\n* **Secure**: Reliable authentication without exposing user credentials to the clients (thanks\n  to [OAuth 2.0](https://oauth.net/) and [OpenID Connect](https://openid.net/)).\n* **Fast**: Powered by [FastAPI](https://fastapi.tiangolo.com/) (one of the fastest Python web frameworks\n  available)\n  and [SQLAlchemy](https://www.sqlalchemy.org/).\n* **Easy-to-use**: Comes with an admin dashboard to manage users and applications. Built-in user profile pages for\n  account management.\n* **Quickly start**: Supports sign up with Google, Yandex, etc. Advanced integration with Telegram.\n* **In touch with users**: Greets users after registration and verifies their actions via OTP.\n* **Customizable**: Changes the appearance with custom templates for pages and email messages. Functionality can be\n  extended with plugins.\n* **Observable**: Monitor the platform's performance with 3 pills of observability: logging, metrics and tracing\n  complied. Fully compatible with [OpenTelemetry](https://opentelemetry.io/).\n\n## Installation\n\nClone the repository:\n\n```bash\ngit clone https://github.com/everysoftware/fastid\n```\n\nGenerate RSA keys:\n\n```bash\nmake certs\n```\n\nCreate a `.env` file based on `.env.example` and run the server:\n\n```bash\nmake up\n```\n\nFastID is available at [http://localhost:8012](http://localhost:8012):\n\n![Sign In](img/signin.png)\n![Profile](img/profile1.png)\n![Connections](img/profile2.png)\n\nAdmin panel is available at: [http://localhost:8012/admin](http://localhost:8012/admin):\n\n![Admin Login](img/admin_login.png)\n![Admin Users](img/admin_users.png)\n\n\u003e To set up observability, you can use [this](https://github.com/everysoftware/fastapi-obs) preset.\n\nEnjoy! 🚀\n\n## Get Started\n\nTo start using FastID, you need to [create](http://localhost:8012/admin/app/create) an application in the admin panel.\nThis will allow you to use FastID for\nauthentication in your application.\n\n![Create app](img/admin_create_app.png)\n\nOnce you have created an application, you can use the standard OAuth 2.0 flow to authenticate users. FastID supports the\nauthorization code flow, which is the most secure and recommended way to authenticate users.\n\nHere is an example of how to use FastID for authentication in a Python application using the\n[FastAPI](https://fastapi.tiangolo.com/) framework and the [httpx](https://www.python-httpx.org/) library.\n\n```python\nfrom typing import Any\nfrom urllib.parse import urlencode\n\nimport httpx\nfrom fastapi import FastAPI, Request\nfrom fastapi.responses import RedirectResponse\n\nFASTID_URL = \"http://localhost:8012\"\nFASTID_CLIENT_ID = ...\nFASTID_CLIENT_SECRET = ...\n\napp = FastAPI()\n\n\n@app.get(\"/login\")\ndef login(request: Request) -\u003e Any:\n    params = {\n        \"response_type\": \"code\",\n        \"client_id\": FASTID_CLIENT_ID,\n        \"redirect_uri\": request.url_for(\"callback\"),\n        \"scope\": \"openid\",\n    }\n    url = f\"{FASTID_URL}/authorize?{urlencode(params)}\"\n    return RedirectResponse(url=url)\n\n\n@app.get(\"/callback\")\ndef callback(code: str) -\u003e Any:\n    response = httpx.post(\n        f\"{FASTID_URL}/api/v1/token\",\n        headers={\"Content-Type\": \"application/x-www-form-urlencoded\"},\n        data={\n            \"grant_type\": \"authorization_code\",\n            \"client_id\": FASTID_CLIENT_ID,\n            \"client_secret\": FASTID_CLIENT_SECRET,\n            \"code\": code,\n        },\n    )\n    token = response.json()[\"access_token\"]\n    response = httpx.get(\n        f\"{FASTID_URL}/api/v1/userinfo\",\n        headers={\"Authorization\": f\"Bearer {token}\"},\n    )\n    return response.json()\n```\n\nIn this example, we define two routes:\n\n1. `/login`: Redirects the user to the FastID authorization page.\n2. `/callback`: Handles the callback from FastID after the user has logged in. It exchanges the authorization code for\n   an access token and retrieves the user's information.\n\nRun the FastAPI application:\n\n```bash\nfastapi dev examples/httpx.py\n```\n\nVisit [http://localhost:8000/login](http://localhost:8000/login) to start the authentication process. You will be\nredirected to the FastID login page, where you can log in with your credentials or use a third-party provider.\n\n![Login](img/oauth_consent.png)\n\nAfter logging in, you will be redirected to the `/callback` route, where you can access the user's information.\n\n![Test Response](img/oauth_callback.png)\n\n**Made with ❤️**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feverysoftware%2Ffastid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feverysoftware%2Ffastid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feverysoftware%2Ffastid/lists"}