{"id":18255418,"url":"https://github.com/hanabix/passport","last_synced_at":"2025-04-04T17:31:13.512Z","repository":{"id":38390076,"uuid":"164794072","full_name":"hanabix/passport","owner":"hanabix","description":"A web gateway for enterprise internal application supports authentication by scaning QR code with APP","archived":false,"fork":false,"pushed_at":"2023-12-05T00:38:46.000Z","size":180,"stargazers_count":7,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-12-05T13:38:23.084Z","etag":null,"topics":["akka","akka-http","akka-streams","dingtalk","jwt","proxy","wechat"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hanabix.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}},"created_at":"2019-01-09T05:27:11.000Z","updated_at":"2022-04-15T12:18:54.000Z","dependencies_parsed_at":"2023-11-27T10:23:40.834Z","dependency_job_id":null,"html_url":"https://github.com/hanabix/passport","commit_stats":null,"previous_names":[],"tags_count":14,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hanabix%2Fpassport","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hanabix%2Fpassport/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hanabix%2Fpassport/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hanabix%2Fpassport/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hanabix","download_url":"https://codeload.github.com/hanabix/passport/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223150655,"owners_count":17095959,"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":["akka","akka-http","akka-streams","dingtalk","jwt","proxy","wechat"],"created_at":"2024-11-05T10:16:14.593Z","updated_at":"2024-11-05T10:16:16.266Z","avatar_url":"https://github.com/hanabix.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI](https://github.com/hanabix/passport/actions/workflows/sbt-coverage.yml/badge.svg)](https://github.com/hanabix/passport/actions/workflows/sbt-coverage.yml) [![Publish](https://github.com/hanabix/passport/actions/workflows/sbt-docker-publish.yml/badge.svg)](https://github.com/hanabix/passport/actions/workflows/sbt-docker-publish.yml) [![Docker Latest](https://img.shields.io/docker/v/zhongl/passport/latest)](https://hub.docker.com/r/zhongl/passport) [![Coveralls github](https://img.shields.io/coveralls/github/hanabix/passport.svg)](https://coveralls.io/github/hanabix/passport?branch=master) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/bc074d003a31425189769e4c97781b0a)](https://www.codacy.com/gh/hanabix/passport/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=hanabix/passport\u0026amp;utm_campaign=Badge_Grade)\n\n\n**Passport** 是一个超轻量级统一认证网关, 面向使用 [钉钉](https://www.dingtalk.com) 或是 [企业微信](https://work.weixin.qq.com/) 的创业团队提供手机扫码登录访问内部服务.\n\n![overview diagram](http://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/zhongl/passport/master/.plantuml/deploy.txt)\n\n\n![seq diagram](http://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/zhongl/passport/master/.plantuml/seq.txt)\n\n\n## 跑起来\n\n```sh\ncurl -LkO https://github.com/zhongl/passport/raw/master/docker-compose.yml \ncurl -LkO https://github.com/zhongl/passport/raw/master/app.conf\nDOMAIN=foo.bar docker-compose up -d\ncurl -k -v https://localhost -H 'Host: www.foo.bar' -H 'Cookie: jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJwYXNzcG9ydCIsIm5hbWUiOiJ6aG9uZ2wiLCJleHAiOjE4NjYxNzI3MjV9.FomLr4SgRvHuI6iUnVZc2-Q9YQbNrh4eDWGbM09xoC8'\n```\n\n- 细节请详见 [docker-compose.yml](https://github.com/zhongl/passport/blob/master/docker-compose.yml) . \n\n\n## 配置 \n\n### 钉钉\n\n```conf\n// app.conf\ninclude \"dingtalk.conf\"\n\ncookie {\n    domain = \".company.internal.domain\"\n    secret = \"JWT签名密钥\"\n}\n\ndingtalk {\n    micro {\n        appkey = \"微应用的appkey\"\n        secret = \"微应用的appsecret\"\n    }\n    \n    mobile {\n        appid = \"移动接入应用的appid\"\n        secret = \"移动接入应用的appSecret\"\n    }\n\n    authorization.redirect = \"https://your.company.domain/authorized\"\n}\n```\n\n\u003e 1. 参见[开发企业内部应用](https://open-doc.dingtalk.com/microapp/bgb96b/aw3h75), 创建**微应用**;\n\u003e 1. 参见[扫码登录第三方Web网站](https://open-doc.dingtalk.com/microapp/serverapi2/kymkv6), 创建**移动接入应用**.\n\n### 企业微信\n\n```conf\n// app.conf\ninclude \"wechat.conf\"\n\ncookie {\n    domain = \".company.internal.domain\"\n    secret = \"JWT签名密钥\"\n}\n\nwechat {\n    corp = \"企业corpid\"\n    secret = \"企业corpsecret\"\n    agent = \"应用的agentid\"\n\n    authorization.redirect = \"https://your.company.domain/authorized\"\n}\n```\n\n\u003e 参见[企业内部开发](https://work.weixin.qq.com/api/doc#90000/90003/90487), 创建**应用**.\n\n## Echo调试\n\n若需要在真正部署之前进行调试验证, 可在运行时指定`-e`:\n\n```sh\ndocker run --rm -it zhongl/passport:latest -e\n```\n\n开启**Echo**模式, 显示请求文本.\n\n\u003e `docker run --rm zhongl/passport:latest --help` 查看更多帮助\n\n## 应用集成\n\n扫码登录后, Passport 会产生一个加签过的 [JWT](https://jwt.io) Token 作为 Cookie, 其中包含当前用户的认证信息(钉钉和微信略有差异). 此 Cookie 也会在后续的请求中透传到合法目标服务器, 做进一步授权处理.\n\n\u003e 认证信息参见[Platforms.scala](https://github.com/zhongl/passport/blob/master/src/main/scala/zhongl/passport/Platforms.scala)\n\n## References\n\n- https://open-doc.dingtalk.com/microapp/debug/ucof2g\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhanabix%2Fpassport","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhanabix%2Fpassport","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhanabix%2Fpassport/lists"}