{"id":16066603,"url":"https://github.com/bookofgreg/doorkeeper-jwt-test","last_synced_at":"2026-01-20T05:31:34.479Z","repository":{"id":36621866,"uuid":"134635345","full_name":"BookOfGreg/Doorkeeper-JWT-test","owner":"BookOfGreg","description":"Doorkeeper + Devise + JWT","archived":false,"fork":false,"pushed_at":"2023-03-08T19:50:40.000Z","size":79,"stargazers_count":3,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T15:36:33.172Z","etag":null,"topics":["devise","doorkeeper","jwt","oauth2","oauth2-server"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BookOfGreg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-23T23:16:44.000Z","updated_at":"2022-11-25T16:36:09.000Z","dependencies_parsed_at":"2024-10-27T16:17:56.809Z","dependency_job_id":"78bc6a2d-a764-41c9-b410-b27d817b788b","html_url":"https://github.com/BookOfGreg/Doorkeeper-JWT-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BookOfGreg/Doorkeeper-JWT-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BookOfGreg%2FDoorkeeper-JWT-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BookOfGreg%2FDoorkeeper-JWT-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BookOfGreg%2FDoorkeeper-JWT-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BookOfGreg%2FDoorkeeper-JWT-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BookOfGreg","download_url":"https://codeload.github.com/BookOfGreg/Doorkeeper-JWT-test/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BookOfGreg%2FDoorkeeper-JWT-test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28596405,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T02:08:49.799Z","status":"ssl_error","status_checked_at":"2026-01-20T02:08:44.148Z","response_time":117,"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":["devise","doorkeeper","jwt","oauth2","oauth2-server"],"created_at":"2024-10-09T05:42:12.976Z","updated_at":"2026-01-20T05:31:34.444Z","avatar_url":"https://github.com/BookOfGreg.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Doorkeeper-JWT-Test\n\n## What?\nThis is an example repo combining Rails API with the Doorkeeper admin UI, making use of Devise for login pages, admin auth, and password flows. The Doorkeeper tokens issued are JWTs with a payload + header that looks like this:\n```JSON\n[{\"iss\": \"account_service\",\n  \"iat\": 1527438897,\n  \"exp\": 1527440097,\n  \"jti\": \"add3ef92-a512-429b-a834-3a3523866cdd\",\n  \"sub\": \"account_service|1\",\n  \"expires_at\": \"2018-05-27T16:54:57Z\",\n  \"user\": {\"id\": 1, \"email\": \"local@example.com\"}},\n {\"typ\": \"JWT\", \"alg\": \"HS512\"}]\n```\n\n## Why?\nFirstly I wanted to understand what was needed for SSO/OAuth2/JWT combo to work in the modern age, secondly everything else had some shortcomings either in usability or flexibility.\n\nhttps://github.com/doorkeeper-gem/doorkeeper-devise-client\n - Using old versions, no JWT\n \nhttps://github.com/digivizer/warden-jwt\n - Uses password flow strategy\n\nhttps://github.com/waiting-for-dev/warden-jwt_auth\n - Is good but limits the JWT decode options\n\nhttps://github.com/mbleigh/omniauth-jwt\n - Expects HTTP based on redirects for flow\n\nhttps://github.com/betterup/devise-doorkeeper\n - No JWT support\n\n## How?\nI cobbled together examples from all the above + the JWT spec + Auth0 articles.\nThis is not a complete application and you shouldn't just drop it into your production env! YMMV, this is for reference only.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbookofgreg%2Fdoorkeeper-jwt-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbookofgreg%2Fdoorkeeper-jwt-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbookofgreg%2Fdoorkeeper-jwt-test/lists"}