{"id":37086582,"url":"https://github.com/festivals-app/festivals-identity-server","last_synced_at":"2026-01-14T10:38:53.783Z","repository":{"id":57573143,"uuid":"311640841","full_name":"Festivals-App/festivals-identity-server","owner":"Festivals-App","description":"Exposing the FestivalsIdentityAPI providing authorization and authentication functions to the FestivalsApp project.","archived":false,"fork":false,"pushed_at":"2025-04-13T22:21:40.000Z","size":215,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-13T22:27:25.198Z","etag":null,"topics":["authentication","authorization","golang","jwt","mysql"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Festivals-App.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":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-11-10T11:43:07.000Z","updated_at":"2025-04-13T22:20:50.000Z","dependencies_parsed_at":"2022-09-26T19:01:05.848Z","dependency_job_id":"079767cb-bb29-45c8-bfaf-1e5eb1a560e2","html_url":"https://github.com/Festivals-App/festivals-identity-server","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/Festivals-App/festivals-identity-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Festivals-App%2Ffestivals-identity-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Festivals-App%2Ffestivals-identity-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Festivals-App%2Ffestivals-identity-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Festivals-App%2Ffestivals-identity-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Festivals-App","download_url":"https://codeload.github.com/Festivals-App/festivals-identity-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Festivals-App%2Ffestivals-identity-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28417675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:25:19.714Z","status":"ssl_error","status_checked_at":"2026-01-14T10:22:49.371Z","response_time":107,"last_error":"SSL_read: 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":["authentication","authorization","golang","jwt","mysql"],"created_at":"2026-01-14T10:38:53.045Z","updated_at":"2026-01-14T10:38:53.776Z","avatar_url":"https://github.com/Festivals-App.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n   \u003ca href=\"https://github.com/festivals-app/festivals-identity-server/commits/\" title=\"Last Commit\"\u003e\n   \u003cimg src=\"https://img.shields.io/github/last-commit/festivals-app/festivals-identity-server?style=flat\" alt=\"Commits Shield\"\u003e\u003c/a\u003e\n   \u003ca href=\"https://github.com/festivals-app/festivals-identity-server/issues\" title=\"Open Issues\"\u003e\n   \u003cimg src=\"https://img.shields.io/github/issues/festivals-app/festivals-identity-server?style=flat\" alt=\"Issues Shield\"\u003e\u003c/a\u003e\n   \u003ca href=\"./LICENSE\" title=\"License\"\u003e\n   \u003cimg src=\"https://img.shields.io/github/license/festivals-app/festivals-identity-server.svg\" alt=\"License Shield\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e\n  \u003cbr/\u003e\u003cbr/\u003e\n    FestivalsApp Identity Server\n  \u003cbr/\u003e\u003cbr/\u003e\n\u003c/h1\u003e\n\nA lightweight Go server application providing the [FestivalsIdentityAPI](DOCUMENTATION.md), a RESTful API that handles\nall authentication and authorization needs for FestivalsApp components.\n\n![Figure 1: Architecture Overview Highlighted](https://github.com/Festivals-App/festivals-documentation/blob/main/images/architecture/export/architecture_overview_identity.svg \"Figure 1: Architecture Overview Highlighted\")\n\n\u003chr/\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#development\"\u003eDevelopment\u003c/a\u003e •\n  \u003ca href=\"#deployment\"\u003eDeployment\u003c/a\u003e •\n  \u003ca href=\"#engage\"\u003eEngage\u003c/a\u003e\n\u003c/p\u003e\n\u003chr/\u003e\n\nThe FestivalsApp backend is secured using three different mechanisms to ensure both secure communication and controlled access:\n\n1. **Mutual TLS (mTLS)** – Every party must have a valid client certificate issued by the FestivalsApp Root CA\n  to establish secure communication with other services. This prevents unauthorized access at the transport layer.\n  For more details, refer to the [festivals-pki](https://github.com/Festivals-App/festivals-pki) repository.  \n2. **API Keys** – Required for accessing read-only parts of the FestivalsAPI. These keys provide a simple way\n  to authenticate services and users that do not require full access.\n3. **JSON Web Tokens (JWTs)** – Used for all other interactions. JWTs enable role-based access control (RBAC),\n  ensuring users are authorized to access specific functions based on their assigned roles and also implement\n  resource access based on user identity. The system verifies JWTs on every request to enforce access restrictions dynamically.\n\nIn addition to these mechanisms, the backend enforces strict firewall rules and network segmentation\nto minimize exposure to unauthorized access.\n\n## Development\n\nThe FestivalsApp Identity Server follows a modular structure for clarity and maintainability. The `database` directory\nfor managing the database, while `auth` handles core authentication logic, `server` manages API routes and middleware\nand `operation` documents deployment and environment. GitHub Actions are in `.github`, and `.vscode` provides recommended\nsettings. The entry point is main.go, with dependencies in go.mod and go.sum.\nRefer to [FestivalsIdentityAPI Documentation](DOCUMENTATION.md) for details on available endpoints.\n\n### Requirements\n\n- [Golang](https://go.dev/) Version 1.24.1+\n- [Visual Studio Code](https://code.visualstudio.com/download) 1.99.2+\n  - Plugin recommendations are managed via [workspace recommendations](https://code.visualstudio.com/docs/editor/extension-marketplace#_recommended-extensions).\n- [Bash script](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) friendly environment\n\n## Deployment\n\nThe Go binaries are able to run without system dependencies so there are not many requirements for the system\nto run the festivals-identity-server binary, just follow the [**deployment guide**](./operation/DEPLOYMENT.md) for\ndeploying it inside a virtual machine or the [**local deployment guide**](./operation/local/README.md) for\nrunning it on your macOS developer machine.\n\n## Engage\n\nI welcome every contribution, whether it is a pull request or a fixed typo. The best place to discuss questions\nand suggestions regarding the festivals-identity-server is the [issues](https://github.com/festivals-app/festivals-identity-server/issues/) section.\nMore general information and a good starting point if you want to get involved is\nthe [festival-documentation](https://github.com/Festivals-App/festivals-documentation) repository.\n\nThe following channels are available for discussions, feedback, and support requests:\n\n| Type                     | Channel                                                |\n| ------------------------ | ------------------------------------------------------ |\n| **General Discussion**   | \u003ca href=\"https://github.com/festivals-app/festivals-documentation/issues/new/choose\" title=\"General Discussion\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/festivals-app/festivals-documentation/question.svg?style=flat-square\" alt=\"General Discussion Shield\"\u003e\u003c/a\u003e \u003c/a\u003e   |\n| **Other Requests**    | \u003ca href=\"mailto:simon@festivalsapp.org\" title=\"Email me\"\u003e\u003cimg src=\"https://img.shields.io/badge/email-Simon-green?logo=mail.ru\u0026style=flat-square\u0026logoColor=white\" alt=\"Other Requests Shield\"\u003e\u003c/a\u003e   |\n\n### Licensing\n\nCopyright (c) 2020-2025 Simon Gaus. Licensed under the [**GNU Lesser General Public License v3.0**](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffestivals-app%2Ffestivals-identity-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffestivals-app%2Ffestivals-identity-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffestivals-app%2Ffestivals-identity-server/lists"}