MT-AUTH是一款多租戶權(quán)限管理系統(tǒng),包含用戶管理與API路由、共享、鑒權(quán)、緩存、跨域、安全防護(hù)等功能
示意圖

應(yīng)用場景
個人 - 云版本
避免從零構(gòu)建用戶權(quán)限管理系統(tǒng),更加專注與業(yè)務(wù)需求與其它開發(fā)者共享API企業(yè) - 請單獨(dú)部署
項目之間用戶通用,需要統(tǒng)一管理項目由不同的團(tuán)隊管理,團(tuán)隊相對獨(dú)立用戶在不同項目中有不同權(quán)限統(tǒng)一管理項目、應(yīng)用與API項目之間需要共享API項目特點(diǎn)
事件驅(qū)動基于角色的權(quán)限控制(RBAC)多租戶不對稱密匙OAuth2站內(nèi)信,短信,郵件通知用戶密碼重置, 注冊碼注冊已簽發(fā)JWT回收API路由、緩存、跨域CORS、CSRF防護(hù)、壓縮、隱藏系統(tǒng)錯誤信息API記錄與分析多因素認(rèn)證(MFA)技術(shù)棧
模塊
概述
技術(shù)棧
mt-access
用戶, 應(yīng)用與API管理, 注冊中心, 通知
Spring Boot, JWT, OAuth2, Redis, RabbitMQ, Spring Cloud Eureka
mt-proxy
API網(wǎng)關(guān)
Spring Boot, Spring Cloud Gateway, Redis, RabbitMQ
mt-ui
UI
Angular
mt-common
通用Utility
Spring Boot
mt-integration-test
集成測試
Spring Boot Test
前端演示項目
# 切換至項目目錄 cd ./mt-auth/mt-sample/nodejs # 安裝demo項目 npm install # 啟動demo項目 node app.js # 打開 http://localhost:3000后端演示項目
準(zhǔn)備工作
將mt-sample/spring-boot打包并部署在任意服務(wù)器,注:服務(wù)器需可以外部訪問# 克隆mt-auth到目標(biāo)服務(wù)器 git clone https://github.com/publicdevop2019/mt-auth.git # 創(chuàng)建docker鏡像 sh ~/mt-auth/script/build/mt-sample-spring-boot.sh # 啟動docker鏡像 sh ~/mt-auth/script/deploy/cluster/mt-sampel-spring-boot.sh 記下調(diào)用地址,例如http://127.0.0.1:8080場景1:路由請求到目標(biāo)后端應(yīng)用
準(zhǔn)備工作
登錄演示賬戶demo@sample.com左側(cè)導(dǎo)航欄點(diǎn)擊->演示項目->應(yīng)用找到演示后端應(yīng)用,點(diǎn)擊編輯按鈕,更改路由地址為記錄下的調(diào)用地址保存并等待約1分鐘緩存刷新路由請求至受保護(hù)API
使用以下指令來驗證,會得到403錯誤碼,提示沒有權(quán)限curl --header "X-XSRF-TOKEN:a14156a0-becc-49d8-bef7-5ac4f0aab389" --header "Cookie:XSRF-TOKEN=a14156a0-becc-49d8-bef7-5ac4f0aab389" -v https://api.letsauth.cloud/demo-svc/protected本地啟動mt-sample/spring-boot并訪問http://localhost:8083/index.html或者啟動nodejs演示項目選擇用戶賬號密碼登錄,輸入測試賬號并登錄,記錄下獲得的access_token值(注意不是整個token的值)指令中添加獲得的token值并重試curl --header "Authorization: Bearer $access_token" \ --header "X-XSRF-TOKEN:a14156a0-becc-49d8-bef7-5ac4f0aab389" --header "Cookie:XSRF-TOKEN=a14156a0-becc-49d8-bef7-5ac4f0aab389" -v https://api.letsauth.cloud/demo-svc/protected # 示例 curl --header "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Im1hbnl0cmVlLWlkIn0.eyJ1aWQiOiIwVThPSThEN0QwUjAiLCJhdWQiOlsiMEM4T0lETjQwTTRHIl0sInVzZXJfbmFtZSI6IjBVOE9JOEQ3RDBSMCIsInNjb3BlIjpbIjBQOE9JRExaNElZUyJdLCJleHAiOjE2ODE2NjMwMDAsImlhdCI6MTY4MTY2Mjg4MCwicHJvamVjdElkIjoiMFA4T0lETFo0SVlTIiwianRpIjoiMGI5Y2RjY2QtYTNhYi00OTFiLThmYTgtNTJjOTg5NjMzYjkyIiwicGVybWlzc2lvbklkcyI6WyIwWThPSUVGS1NQSEQiXSwiY2xpZW50X2lkIjoiMEM4T0laM0dWRDM0In0.UTRL06dqclYkzRBxzmrbSJBliu4k_9Ow-4CRpgr2SrzLaDvWGHcnLRSiJdqNrzSpDx4dr1eW2_RRk8sjXdbE6bNkedTTIG1l8RU1jwewspuO9vUt1MOn3zUkLh70iRFT64nPdByiJeY1UzvDa1rEGWxysWp-q8Kvwwcj03c1pr_-l2J7HvTWsm7zyfykinRhSNQJb9OmLzjW-HRP3o2GZNmIDOMZTOWanrdnI5IbbTcqDUxkHcRJbW4Yj1HKV4LGlandwxEDMLl1n6zlp4pgx1WwvLkswO-yX3cAPXQvZwPQ5-M8sh77sMBnQptY9-w8zzMELTzv1fxEOuGJ-cWzEw" \ --header "X-XSRF-TOKEN:a14156a0-becc-49d8-bef7-5ac4f0aab389" --header "Cookie:XSRF-TOKEN=a14156a0-becc-49d8-bef7-5ac4f0aab389" -v https://api.letsauth.cloud/demo-svc/protected項目地址:
https://github.com/publicdevop2019/mt-auth