Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 集成 MAA Account 系统 #111

Open
AlisaAkiron opened this issue May 29, 2023 · 4 comments
Open

feat: 集成 MAA Account 系统 #111

AlisaAkiron opened this issue May 29, 2023 · 4 comments

Comments

@AlisaAkiron
Copy link
Member

MAA Account 系统正式启用了。

MAA Account 系统是用 Authentik 搭建的单点登录系统,旨在为所有 MAA 相关内容提供账号服务。支持 OpenID Connect,SAML,LDAP 登录。

作业站期望使用 OpenID Connect 进行登录。后端现有用户与通过 OIDC 登录的用户可以通过电子邮箱进行绑定。

登录流程:

用户点击登录按钮 -> 跳转到 MAA Account 登录页面 -> 登录成功携带 Token 返回作业站 -> 作业站通过 Token 从 OIDC 服务器获取用户信息 -> 与作业站数据库用户进行邮箱比对,若用户不存在,则通过使用 OIDC 获取的用户信息创建一个用户,用户存在则使用该账号登录

@AlisaAkiron
Copy link
Member Author

告诉我个 MAA Account 的用户名,给权限(

@Lixuhuilll
Copy link
Contributor

关于集成 MAA Account 系统 ,目前想到一个兼容现有登录系统的方案:
用户点击登录按钮 -> 前端请求后端,获取组装好MAA Account 登录页面地址以及回调等各项参数的链接 -> 通过链接跳转到 MAA Account 登录页面 -> 登录成功携带 Token 返回作业站前端 -> 作业站前端将Token发往后端 -> 后端通过 Token 从 OIDC 服务器获取用户信息 -> 与作业站数据库用户进行邮箱比对,若用户不存在,则通过使用 OIDC 获取的用户信息创建一个用户 -> 后端调用现有的 JWT 认证登录模块,登录通过 OIDC 获取到的邮箱 -> 后端返回登录信息
在这个逻辑中,复用了现有的登录模块,将 OIDC 返回的 Token 当做一次性使用的账号密码,相当于 OIDC 帮用户输入了一遍用户名和密码,后续的处理逻辑都可以保持原状。
我想要测试一下这套逻辑是否行得通,能否给我权限?用户名:Lixuhuilll

@AlisaAkiron
Copy link
Member Author

关于集成 MAA Account 系统 ,目前想到一个兼容现有登录系统的方案:

用户点击登录按钮 -> 前端请求后端,获取组装好MAA Account 登录页面地址以及回调等各项参数的链接 -> 通过链接跳转到 MAA Account 登录页面 -> 登录成功携带 Token 返回作业站前端 -> 作业站前端将Token发往后端 -> 后端通过 Token 从 OIDC 服务器获取用户信息 -> 与作业站数据库用户进行邮箱比对,若用户不存在,则通过使用 OIDC 获取的用户信息创建一个用户 -> 后端调用现有的 JWT 认证登录模块,登录通过 OIDC 获取到的邮箱 -> 后端返回登录信息

在这个逻辑中,复用了现有的登录模块,将 OIDC 返回的 Token 当做一次性使用的账号密码,相当于 OIDC 帮用户输入了一遍用户名和密码,后续的处理逻辑都可以保持原状。

我想要测试一下这套逻辑是否行得通,能否给我权限?用户名:Lixuhuilll

已给

@Lixuhuilll
Copy link
Contributor

好了,本地使用 postman 临时测试了一下,响应结果什么的都没问题,应该基本可用了,只要前端适配好就能顺利接入 Maa Account 了。并且没有影响现有的登录系统。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants