{"id":13467624,"url":"https://github.com/authorizerdev/authorizer","last_synced_at":"2025-04-25T14:46:14.311Z","repository":{"id":37384864,"uuid":"373163805","full_name":"authorizerdev/authorizer","owner":"authorizerdev","description":"Your data, your control. Fully open source, authentication and authorization. No lock-ins.  Deployment in Railway in 120 seconds || Spin a docker image as a micro-service in your infra. Built in login page and Admin panel out of the box.","archived":false,"fork":false,"pushed_at":"2025-04-18T06:02:34.000Z","size":58550,"stargazers_count":1788,"open_issues_count":84,"forks_count":184,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-04-18T18:37:11.764Z","etag":null,"topics":["2fa","auth","authentication","authorization","docker","golang","graphdb","graphql","hacktoberfest","magic-link","microservice","nosql","oauth2","role-based-access-control","security","social-logins","sql","typescript","user-privileges"],"latest_commit_sha":null,"homepage":"https://authorizer.dev","language":"Go","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/authorizerdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"authorizerdev"}},"created_at":"2021-06-02T12:42:07.000Z","updated_at":"2025-04-17T10:00:37.000Z","dependencies_parsed_at":"2023-10-25T20:33:47.340Z","dependency_job_id":"2919dfc9-f444-4b05-8f15-59f61c03735c","html_url":"https://github.com/authorizerdev/authorizer","commit_stats":{"total_commits":911,"total_committers":38,"mean_commits":"23.973684210526315","dds":0.2085620197585072,"last_synced_commit":"10e9d8cb1962b1b405e07035a0cf05e9da3dd989"},"previous_names":[],"tags_count":273,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authorizerdev%2Fauthorizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authorizerdev%2Fauthorizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authorizerdev%2Fauthorizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authorizerdev%2Fauthorizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/authorizerdev","download_url":"https://codeload.github.com/authorizerdev/authorizer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250561109,"owners_count":21450352,"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":["2fa","auth","authentication","authorization","docker","golang","graphdb","graphql","hacktoberfest","magic-link","microservice","nosql","oauth2","role-based-access-control","security","social-logins","sql","typescript","user-privileges"],"created_at":"2024-07-31T15:00:58.599Z","updated_at":"2025-04-24T04:20:41.496Z","avatar_url":"https://github.com/authorizerdev.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://authorizer.dev\"\u003e\n    \u003cimg alt=\"Logo\" src=\"https://authorizer.dev/images/logo.png\" width=\"60\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003e\n  Authorizer\n\u003c/h1\u003e\n\n**Authorizer** is an open-source authentication and authorization solution for your applications. Bring your database and have complete control over the user information. You can self-host authorizer instances and connect to any database (Currently supports 11+ databases including [Postgres](https://www.postgresql.org/), [MySQL](https://www.mysql.com/), [SQLite](https://www.sqlite.org/index.html), [SQLServer](https://www.microsoft.com/en-us/sql-server/), [YugaByte](https://www.yugabyte.com/),  [MariaDB](https://mariadb.org/), [PlanetScale](https://planetscale.com/), [CassandraDB](https://cassandra.apache.org/_/index.html), [ScyllaDB](https://www.scylladb.com/), [MongoDB](https://mongodb.com/), [ArangoDB](https://www.arangodb.com/)).\n\nFor more information check:\n\n- [Docs](http://docs.authorizer.dev/)\n- [Discord Community](https://discord.gg/Zv2D5h6kkK)\n- [Contributing Guide](https://github.com/authorizerdev/authorizer/blob/main/.github/CONTRIBUTING.md)\n\n# Introduction\n\n\u003cimg src=\"https://docs.authorizer.dev/images/authorizer-arch.png\" style=\"height:20em\"/\u003e\n\n#### We offer the following functionality\n\n- ✅ Sign-in / Sign-up with email ID and password\n- ✅ Secure session management\n- ✅ Email verification\n- ✅ OAuth2 and OpenID compatible APIs\n- ✅ APIs to update profile securely\n- ✅ Forgot password flow using email\n- ✅ Social logins (Google, Github, Facebook, LinkedIn, Apple more coming soon)\n- ✅ Role-based access management\n- ✅ Password-less login with magic link login\n- ✅ Multi factor authentication\n- ✅ Email templating\n- ✅ Webhooks\n\n## Roadmap\n\n- [VueJS SDK](https://github.com/authorizerdev/authorizer-vue)\n- [Svelte SDK](https://github.com/authorizerdev/authorizer-svelte)\n- [Golang SDK](https://github.com/authorizerdev/authorizer-go)\n- React Native SDK\n- Flutter SDK\n- Android Native SDK\n- iOS native SDK\n- Python SDK\n- PHP SDK\n- WordPress plugin\n- Kubernetes Helm Chart\n- [Local Stack](https://github.com/localstack/localstack)\n- AMI\n- Digital Ocean Droplet\n- Azure\n- Render\n- Edge Deployment using Fly.io\n- Password-less login with mobile number and OTP SMS\n\n# Getting Started\n\n## Step 1: Get Authorizer Instance\n\n### Deploy Production Ready Instance\n\nDeploy production ready Authorizer instance using one click deployment options available below\n\n| **Infra provider** |                                                                                            **One-click link**                                                                                            |               **Additional information**               |\n| :----------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------: |\n|    Railway.app     |                    \u003ca href=\"https://railway.app/new/template/nwXp1C?referralCode=FEF4uT\"\u003e\u003cimg src=\"https://railway.app/button.svg\" style=\"height: 44px\" alt=\"Deploy on Railway\"\u003e\u003c/a\u003e                     | [docs](https://docs.authorizer.dev/deployment/railway) |\n|       Heroku       | \u003ca href=\"https://heroku.com/deploy?template=https://github.com/authorizerdev/authorizer-heroku\"\u003e\u003cimg src=\"https://www.herokucdn.com/deploy/button.svg\" alt=\"Deploy to Heroku\" style=\"height: 44px;\"\u003e\u003c/a\u003e | [docs](https://docs.authorizer.dev/deployment/heroku)  |\n|       Render       |                     [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/authorizerdev/authorizer-render)                      | [docs](https://docs.authorizer.dev/deployment/render)  |\n|       Koyeb       | \u003ca target=\"_blank\" href=\"https://app.koyeb.com/deploy?name=authorizer\u0026type=docker\u0026image=docker.io/lakhansamani/authorizer\u0026env[PORT]=8000\u0026env[DATABASE_TYPE]=postgres\u0026env[DATABASE_URL]=CHANGE_ME\u0026ports=8000;http;/\"\u003e\u003cimg alt=\"Deploy to Koyeb\" src=\"https://www.koyeb.com/static/images/deploy/button.svg\" /\u003e\u003c/a\u003e | [docs](https://docs.authorizer.dev/deployment/koyeb)  |\n|     RepoCloud     | \u003ca href=\"https://repocloud.io/details/?app_id=174\"\u003e\u003cimg src=\"https://d16t0pc4846x52.cloudfront.net/deploy.png\" alt=\"Deploy on RepoCloud\"\u003e\u003c/a\u003e | [docs](https://repocloud.io/details/?app_id=174) |\n| Alibaba Cloud| \u003ca target=\"_blank\" href=\"https://computenest.console.aliyun.com/service/instance/create/default?type=user\u0026ServiceName=Authorizer%E7%A4%BE%E5%8C%BA%E7%89%88\"\u003e\u003cimg src=\"https://service-info-public.oss-cn-hangzhou.aliyuncs.com/computenest-en.svg\" alt=\"Alibaba Cloud\" /\u003e\u003c/a\u003e | [docs](https://docs.authorizer.dev/deployment/alibaba-cloud) |\n\n\n### Deploy Authorizer Using Source Code\n\nThis guide helps you practice using Authorizer to evaluate it before you use it in a production environment. It includes instructions for installing the Authorizer server in local or standalone mode.\n\n#### Install using source code\n\n#### Prerequisites\n\n- OS: Linux or macOS or windows\n- Go: (Golang)(https://golang.org/dl/) \u003e= v1.15\n\n#### Project Setup\n\n1. Fork the [authorizer](https://github.com/authorizerdev/authorizer) repository (**Skip this step if you have access to repo**)\n2. Clone repo: `git clone https://github.com/authorizerdev/authorizer.git` or use the forked url from step 1\n3. Change directory to authorizer: `cd authorizer`\n4. Create Env file `cp .env.sample .env`. Check all the supported env [here](https://docs.authorizer.dev/core/env/)\n5. Build Dashboard `make build-dashboard`\n6. Build App `make build-app`\n7. Build Server `make clean \u0026\u0026 make`\n   \u003e Note: if you don't have [`make`](https://www.ibm.com/docs/en/aix/7.2?topic=concepts-make-command), you can `cd` into `server` dir and build using the `go build` command. In that case you will have to build `dashboard` \u0026 `app` manually using `npm run build` on both dirs.\n8. Run binary `./build/server`\n\n### Deploy Authorizer using binaries\n\nDeploy / Try Authorizer using binaries. With each [Authorizer Release](https://github.com/authorizerdev/authorizer/releases)\nbinaries are baked with required deployment files and bundled. You can download a specific version of it for the following operating systems:\n\n- Mac OSX\n- Linux\n\n#### Download and unzip bundle\n\n- Download the Bundle for the specific OS from the [release page](https://github.com/authorizerdev/authorizer/releases)\n\n\u003e Note: For windows, we recommend running using docker image to run authorizer.\n\n- Unzip using following command\n\n  - Mac / Linux\n\n  ```sh\n  tar -zxf AUTHORIZER_VERSION -c authorizer\n  ```\n\n- Change directory to `authorizer`\n\n  ```sh\n  cd authorizer\n  ```\n\n#### Step 3: Start Authorizer\n\n- Run following command to start authorizer\n\n  - For Mac / Linux users\n\n  ```sh\n  ./build/server\n  ```\n\n\u003e Note: For mac users, you might have to give binary the permission to execute. Here is the command you can use to grant permission `xattr -d com.apple.quarantine build/server`\n\n## Step 2: Setup Instance\n\n- Open authorizer instance endpoint in browser\n- Sign up as an admin with a secure password\n- Configure environment variables from authorizer dashboard. Check env [docs](/core/env) for more information\n\n\u003e Note: `DATABASE_URL`, `DATABASE_TYPE` and `DATABASE_NAME` are only configurable via platform envs\n\n### Things to consider\n\n- For social logins, you will need respective social platform key and secret\n- For having verified users, you will need an SMTP server with an email address and password using which system can send emails. The system will send a verification link to an email address. Once an email is verified then, only able to access it.\n  \u003e Note: One can always disable the email verification to allow open sign up, which is not recommended for production as anyone can use anyone's email address 😅\n- For persisting user sessions, you will need Redis URL (not in case of railway app). If you do not configure a Redis server, sessions will be persisted until the instance is up or not restarted. For better response time on authorization requests/middleware, we recommend deploying Redis on the same infra/network as your authorizer server.\n\n## Testing\n\n- Check the testing instructions [here](https://github.com/authorizerdev/authorizer/blob/main/.github/CONTRIBUTING.md#testing)\n\n## Integrating into your website\n\nThis example demonstrates how you can use [`@authorizerdev/authorizer-js`](/authorizer-js/getting-started) CDN version and have login ready for your site in few seconds. You can also use the ES module version of [`@authorizerdev/authorizer-js`](/authorizer-js/getting-started) or framework-specific versions like [`@authorizerdev/authorizer-react`](/authorizer-react/getting-started)\n\n### Copy the following code in `html` file\n\n\u003e **Note:** Change AUTHORIZER_URL in the below code with your authorizer URL. Also, you can change the logout button component\n\n```html\n\u003cscript src=\"https://unpkg.com/@authorizerdev/authorizer-js/lib/authorizer.min.js\"\u003e\u003c/script\u003e\n\n\u003cscript type=\"text/javascript\"\u003e\n\tconst authorizerRef = new authorizerdev.Authorizer({\n\t\tauthorizerURL: `YOUR_AUTHORIZER_INSTANCE_URL`,\n\t\tredirectURL: window.location.origin,\n\t\tclientID: 'YOUR_CLIENT_ID', // obtain your client id from authorizer dashboard\n\t});\n\n\t// use the button selector as per your application\n\tconst logoutBtn = document.getElementById('logout');\n\tlogoutBtn.addEventListener('click', async function () {\n\t\tawait authorizerRef.logout();\n\t\twindow.location.href = '/';\n\t});\n\n\tasync function onLoad() {\n\t\tconst res = await authorizerRef.authorize({\n\t\t\tresponse_type: 'code',\n\t\t\tuse_refresh_token: false,\n\t\t});\n\t\tif (res \u0026\u0026 res.access_token) {\n\t\t\t// you can use user information here, eg:\n\t\t\tconst user = await authorizerRef.getProfile({\n\t\t\t\tAuthorization: `Bearer ${res.access_token}`,\n\t\t\t});\n\t\t\tconst userSection = document.getElementById('user');\n\t\t\tconst logoutSection = document.getElementById('logout-section');\n\t\t\tlogoutSection.classList.toggle('hide');\n\t\t\tuserSection.innerHTML = `Welcome, ${user.email}`;\n\t\t}\n\t}\n\tonLoad();\n\u003c/script\u003e\n```\n\n---\n\n### Support my work\n\n\u003ca href=\"https://www.buymeacoffee.com/lakhansamani\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" style=\"height: 60px !important;width: 217px !important;\" \u003e\u003c/a\u003e\n","funding_links":["https://github.com/sponsors/authorizerdev","https://www.buymeacoffee.com/lakhansamani"],"categories":["Go"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fauthorizerdev%2Fauthorizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fauthorizerdev%2Fauthorizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fauthorizerdev%2Fauthorizer/lists"}