Skip to content
This repository has been archived by the owner on Apr 6, 2018. It is now read-only.
Haowei Wen edited this page Aug 20, 2017 · 6 revisions

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对相应数据进行更新.

Clone this wiki locally