{"id":17803961,"url":"https://github.com/kjpou1/token-auth-server","last_synced_at":"2026-04-26T12:32:46.328Z","repository":{"id":44730217,"uuid":"441825232","full_name":"kjpou1/token-auth-server","owner":"kjpou1","description":"Token-based Authorization server","archived":false,"fork":false,"pushed_at":"2022-01-28T09:01:02.000Z","size":607,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T04:47:50.751Z","etag":null,"topics":["authentication","deno","server","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/kjpou1.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":".github/CODEOWNERS","security":null,"support":null}},"created_at":"2021-12-26T06:29:51.000Z","updated_at":"2022-01-10T16:49:22.000Z","dependencies_parsed_at":"2022-07-20T15:18:08.632Z","dependency_job_id":null,"html_url":"https://github.com/kjpou1/token-auth-server","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kjpou1/token-auth-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjpou1%2Ftoken-auth-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjpou1%2Ftoken-auth-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjpou1%2Ftoken-auth-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjpou1%2Ftoken-auth-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kjpou1","download_url":"https://codeload.github.com/kjpou1/token-auth-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjpou1%2Ftoken-auth-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32297895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"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","deno","server","typescript"],"created_at":"2024-10-27T12:48:41.974Z","updated_at":"2026-04-26T12:32:46.313Z","avatar_url":"https://github.com/kjpou1.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv\u003e\n  \u003ca href=\"\"\u003e\n    \u003cimg alt=\"Active\" src=\"https://img.shields.io/badge/status-early%20development-orange?\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/kjpou1/token-auth-server/stargazers\"\u003e\n    \u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/kjpou1/token-auth-server\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"\"\u003e\n    \u003cimg alt=\"GitHub license\" src=\"https://img.shields.io/github/license/kjpou1/token-auth-server\" /\u003e\n  \u003c/a\u003e\n  \u003c/br\u003e\n  \u003ca href=\"https://deno.land\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/deno-1.18.0-green?logo=deno\"/\u003e\n  \u003c/a\u003e\n  \u003c/br\u003e\n  \u003ca href=\"https://deno.land/x/redis@v0.25.1\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/redis-0.25.1-green?logo=redis\"/\u003e\n  \u003c/a\u003e   \n  \u003ca href=\"https://deno.land/x/mongo@v0.29.0\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/MongoDB-0.29.0-green?logo=mongodb\u0026logoColor=white\"/\u003e\n  \u003c/a\u003e\n  \u003c/br\u003e\n  \u003ca href=\"https://github.com/vuejs/vue\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Vue.js-3-green?\u0026logoColor=4FC08D\"/\u003e\n  \u003c/a\u003e  \n\n\u003c/div\u003e\n\n\u003c!-- ### develop branch \n[![CI](https://github.com/kjpou1/token-auth-server/workflows/CI/badge.svg?branch=develop\u0026event=push)](https://github.com/kjpou1/token-auth-server/actions/workflows/ci.yml) --\u003e\n\n### main branch \n[![CI](https://github.com/kjpou1/token-auth-server/workflows/CI/badge.svg?branch=main\u0026event=push)](https://github.com/kjpou1/token-auth-server/actions/workflows/ci.yml)\n\n---\n\n# Token Authentication Server\n\nImplementation of a Token-Based identity and authorization server.\n\nKey implementation details\n- Uses tokens to authenticate users.\n- Refresh Token Rotation implementation guaranting that every time an application exchanges a refresh token to get a new access token, a new refresh token is also returned.\n- Automatic Refresh Token reuse detection deactivating the user and marking the user record as compromised.\n- All tokens are given a expiration\n- Only the minimum needed information is kept in the token.\n\n## Pre Requirements\n\n[Docker Compose](https://docs.docker.com/compose/install/) is used to execute the project and is described below.  [Docker Desktop](https://docs.docker.com/desktop/) includes [Compose](https://docs.docker.com/compose/install/) along with other Docker apps, so most users do not need to install Compose separately. \n\n- ### Docker Desktop\n\n  - [Install Docker Desktop on Mac](https://docs.docker.com/desktop/mac/install/)\n\n  - [Install Docker Desktop on Windows](https://docs.docker.com/desktop/windows/install/)\n\n- ### Clone this repository:\n\n  ```\n  $ git clone https://github.com/kjpou1/token-auth-server.git\n\n  $ cd token-auth-server\n  ```\n\n- ### Minimal Configuration:\n  Setup the default user seed information for api:\n\n  - First create the `.env` file\n\n    - Mac \n      ```\n      $ cd api\n      $ touch .env\n      ```\n\n    - Windows\n      ```\n      cd api\n      copy .env+\n      ```\n  - Open and add the following configuration entries:\n\n    ``` bash\n    #===========================\n    ## Database seed information\n    #===========================\n\n    # The default name of the user\n    SEED_NAME=Admin\n    # The default email of the user\n    SEED_EMAIL=admin@example.com\n    # The default password of the seeded user\n    SEED_PASSWORD=\n    ```\n    :exclamation: \u003cb\u003e\u003ci\u003eNote:\u003c/i\u003e Make sure to provide a SEED_PASSWORD value or an error will be issued during startup\u003c/b\u003e \n\n\n\n\n## Quickstart - Running locally\n\nStart up the [docker compose](https://docs.docker.com/compose/install/) file provided in the main directory.\n\n- ### Run interactively\n  ```\n  docker compose up --build\n  ```\n\n- ### Run in background task\n  ```\n  docker compose up -d --build\n  ```\n\nThis may take a while on first run while everything is being downloaded, built and installed.\n\nBy default the auth server can be reached at `http://localhost:3001/api/vi/`\n\n## Authentication Forms\n\nThere are a couple of delivered forms that one can use.\n\nThey use a redirect after a successful action.\n\n- Sign In with redirect - http://localhost:3001/auth-forms/signin\n- Register with redirect - http://localhost:3001/auth-forms/register\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkjpou1%2Ftoken-auth-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkjpou1%2Ftoken-auth-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkjpou1%2Ftoken-auth-server/lists"}