Skip to content

FuziharaYukina/MioVerify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MioVerify

Static Badge Static Badge Static Badge Static Badge

MioVerify是一个根据 Yggdrasil 服务端技术规范 实现的MC身份验证服务器。

什么是身份验证服务器?

就好比Minecraft启动器可以登录你的正版号一样。authlib-injector实现了一种外置登录,允许玩家使用第三方的验证服务器。在登录时,同样会要求输入账号(一般是邮箱)和密码,并且可以上传和查看皮肤等。

另外,如果游戏服务器也使用了authlib-injector,就可以做到一样的正版验证效果。

Yggdrasil API是一套规范,定义了如何实现身份验证。而MioVerify正是按照这个规范开发出的Web服务器。实际上,每个人都可以设计一个自己的验证服务器。

目前所有的主流启动器都已支持外置登录。

有关Minecraft的authlib-injector技术,请详见 yushijinhun/authlib-injector

实现功能

  • 账号密码登录获取token,刷新token
  • 验证和吊销token,用户登出
  • 单一和批量获取角色(Profile)信息
  • 角色属性RSA签名
  • 服务器元数据自定义配置
  • 游戏服务器session会话验证
  • 材质上传和下载(待完善)
  • 以上功能均遵守Yggdrasil API
  • 扩展API:玩家角色注册(正在扩展)
  • SSL支持,https协议

开发工具

IDE: IntelliJ IDEA

版本管理: Git + Maven

本项目使用的技术:

  • Spring Boot, Spring AOP, Spring Web
  • JWT
  • Redis
  • Mybatis Plus (SQL)

测试工具:

  • Postman
  • HMCL-3.5.5
  • Spring Test
  • Navicat
  • redis-cli

使用教程

RELEASE 中获取最新的压缩包(或者自行Maven package)并解压到一个文件夹。

务必修改application.yml里面的配置项,如果没有填写任何数据库信息,将会在运行目录自动生成和使用SQLite数据库。

必须要先启动Redis服务器并在配置里面填写好地址。(如果你是直接在本地启用redis服务器的则不需要填写,保持默认即可)

服务器配置详情已经在application.yml写清楚了。

在项目目录下输入命令行启动对应jar即可。

扩展API

不同于Yggdrasil API,MioVerify提供了一套扩展的API,方便调用实现注册等功能,但还需要前端或者客户端继续实现可视化操作。

以下都是POST请求,并且Content-Typeapplication/json,属于请求体内容。

如果操作成功,则返回200 OK,否则返回其它状态码。

注册用户

此特性必须要在配置中启用。

/extern/register/user

{
  "username": "用户名(请不要与已有的重复)",
  "password": "密码",
  "preferredLang": "偏好语言代号(不包含则默认为zh_CN)",
  "key": "密钥(配置中开启permission-key才必须包含)"
}

注册角色

此特性必须要在配置中启用。

/extern/register/profile

{
  "profileName": "要注册角色名(是否允许重复请在配置中设置)",
  "skinUploadAllow": "是否允许上传皮肤(不包含则默认为true)",
  "capeUploadAllow": "是否允许上传披风(不包含则默认为true)",
  "username": "要绑定的用户名",
  "password": "要绑定的用户密码(配置中开启profile-strict才必须包含)",
  "key": "密钥(配置中开启permission-key才必须包含)"
}

材质API

目前MioVerify实现类皮肤站功能用的是内嵌的实现,每次请求角色(Profile)json时中的材质url的域名在application.ymlserver-domain定义。如果服务器的域名是xxx.com,那么url将会类似这样:

"url": "http://xxx.com/texture/hash/{hash}"

另外,如果use-http选项为true,将会是这样的:

"url": "https://xxx.com/texture/hash/{hash}"

然而,如果要设置SSL支持,需要在配置中独立设置证书信息。

特别地,如果要获取默认的皮肤(可以在skins文件夹下更改),将会是以下:

http(s)://xxx.com/texture/skin/default

待实现

  • API地址指示(ALI)
  • 动态的材质资源来源
  • 密码密文存储
  • 域名和SSL完整支持
  • 后台管理网页(可能)
  • ...

开发信息

本项目由作者个人独立开发完成,可能存在亿点bug。

如果对此项目感兴趣,可以联系作者QQ1153624453加入开发团队

About

A Minecraft verification server following Yggdrasil API

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages