MT-AUTH是一款多租户权限管理系统,包含用户管理与API路由、共享、鉴权、缓存、跨域、安全防护等功能
示意图

应用场景
个人 - 云版本
避免从零构建用户权限管理系统,更加专注与业务需求与其它开发者共享API企业 - 请单独部署
项目之间用户通用,需要统一管理项目由不同的团队管理,团队相对独立用户在不同项目中有不同权限统一管理项目、应用与API项目之间需要共享API项目特点
事件驱动基于角色的权限控制(RBAC)多租户不对称密匙OAuth2站内信,短信,邮件通知用户密码重置, 注册码注册已签发JWT回收API路由、缓存、跨域CORS、CSRF防护、压缩、隐藏系统错误信息API记录与分析多因素认证(MFA)技术栈
模块
概述
技术栈
mt-access
用户, 应用与API管理, 注册中心, 通知
Spring Boot, JWT, OAuth2, Redis, RabbitMQ, Spring Cloud Eureka
mt-proxy
API网关
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后端演示项目
准备工作
将mt-sample/spring-boot打包并部署在任意服务器,注:服务器需可以外部访问# 克隆mt-auth到目标服务器 git clone https://github.com/publicdevop2019/mt-auth.git # 创建docker镜像 sh ~/mt-auth/script/build/mt-sample-spring-boot.sh # 启动docker镜像 sh ~/mt-auth/script/deploy/cluster/mt-sampel-spring-boot.sh 记下调用地址,例如http://127.0.0.1:8080场景1:路由请求到目标后端应用
准备工作
登录演示账户demo@sample.com左侧导航栏点击->演示项目->应用找到演示后端应用,点击编辑按钮,更改路由地址为记录下的调用地址保存并等待约1分钟缓存刷新路由请求至受保护API
使用以下指令来验证,会得到403错误码,提示没有权限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