-
Notifications
You must be signed in to change notification settings - Fork 9
Home
Welcome to the authlib-agent wiki!
此项目已有替代品:authlib-injector, 因此该项目除bug修复外,将不会再加入新功能。
注意: 本项目是面向开发者的.
authlib-agent是一个高可靠性, 高适用性, 用于Minecraft的, 游戏外登录及皮肤解决方案. 支持Minecraft1.7+, Craftbukkit, Spigot, Bungeecord等. 通过对正版登录API的重定向, 实现了一个功能和正版几乎一样的游戏外登录系统.
本项目由两部组成: authlib-javaagent和yggdrasil-backend.
authlib-javaagent是一个javaagent, 通过在Minecraft加载类时动态修改字节码, 实现对Yggdasil API的修改, 将API重定向到自己的服务器上. (Yggdrasil: Mojang的登录服务)
yggdrasil-backend是一个java编写的webapp, 实现了和Mojang Yggdrasil服务相同的API, 可以接受被authlib-javaagent重定向的请求, 完成登录验证. 同时也提供了一组RESTful API, 提供了对游戏账户及角色的管理, 可以基于该API轻松开发自己的账号系统. 为了提升性能, yggdrasil-backend使用了Redis(见下图).
以下是部署完成后的架构图:
------------------------- ---------- -------------- ----------------------
|Minecraft Server/Client| |Firewall| |Apache/Nginx| |Tomcat | -----------------
|(with javaagent) | Yggdrasil Request | | | | Reverse Proxy |------------------- | |Database(MySQL)|
| ------------------------------------------------>| |<--------------->||yggdrasil-backend|<---->|_______________|
|_______________________| Redirected by authlib-javaagent |________| |____________| || | | --------
||_________________|<---->|Redis |
|______ /|\ _________| |______|
|
|
| Manager API
|
----------------
|Account System|
|______________|
可以看到Minecraft客户端和服务端本来发往mojang服务器的请求, 被authlib-javaagent重定向到自己服务器上, 通过防火墙, 被Apache/Nginx反向代理, 然后运行于Tomcat中的ygdrasil-backend处理该请求. 账户系统(这个不属于本项目范畴)在处理用户注册, 用户资料修改后, 通过Manager API通知yggdrasil-backend, yggdrasil-backend对相应数据进行更新.