众所周知 Minecraft 使用了被称为 Yggdrasil 的正版认证系统 实现了在对等情况下的身份认证

但是在开启了离线模式的服务器中 也有着许多的身份认证方式 例如使用 AuthMe 或者 CrazyLogin 之类的登陆插件

但是这些插件对与Mod开发者并不友好 在某些使用了 FakePlayer 的环境下会把假人也当为玩家 这时候这个假人的各种操作就炸了

有没有解决这些问题的登陆方式呢 那当然是有的啦 这就是 authlib

原理

通过对 Java字节码 的修改 将 Mojang 的请求重定向到自己的认证服务器

Identity 和 Authlib 的 Agent 的区别

大体构建相同 都是使用自己的API Server重定向请求
Identity最主要的特点是开箱即用 这点比官方的Authlib要好
事实上我和Authlib作者聊过 在未来可能会规范API的路由
有可能 (这个Flag立的) 我会在未来的某个时候完全重写Identity也不一定 咳咳扯远了

使用

安装

前提环境是 Nodejs 我们可以使用 NVM 来方便的进行Nodejs的安装
数据库环境需要 MongoDBRedis 这两个环境的安装在互联网上已经很多了 这里不在讲述

注意
MongoDB 请不要在没有设置账户验证的情况下将端口开放到公网 就算是设定了账户认证最好也不要开放到公网
Redis在不开放到公网的情况下建议设置强密码加密

这时候就可以通过Git获取最新的源代码安装了

git clone -b reload https://github.com/Indexyz/Identity.git
npm install
// Configure your settings in config.js
npm run start

这时候访问你的localhost:3000
你就成功了

使用Docker安装

Docker运行应该是最方便的运行方式了 他可以方便快捷的管理每个服务

docker run -d -v /data/identity/db:/data/db --name MongoDB-Identity mongo
docker run -d --name Redis-Identity redis
docker run --link MongoDB-Identity:mongo --link Redis-Identiy:redis \
    # -e ENV_KEY=ENV_VALUE
    -p 80:3000 indexyz/identity

其中的 ENV_KEYENV_VALUE 可以在 Identity Wiki-Environment 看到
然后访问本地的80端口 你就可以看到Identity的界面了

和Authlib-agent进行配合

使用我修改过的 authlib-agent 修改其中的链接然后进行打包

git clone https://github.com/Indexyz/authlib-agent
nano configure.sh            # 修改 AGENT_API_ROOT 和 AGENT_SKIN_DOMAINS
sh build.sh

运行之后你会在根目录下见到 authlibagent.jar 这就是打包出来的jar了
如果你想不接入自己的 Identity 可以选择使用 官方服务器
这是他的AuthlibAgent.jar

标签: minecraft, game, usage

评论已关闭

Debug: IPAddress: 3.84.182.112 Infos: Array ( [0] => 美国 [1] => 美国 [2] => [3] => )