NIKOMARU
PORTFOLIO
EN
MineAuth Community

MineAuth

Role
Developer
Stack
Kotlin · Ktor · OpenTelemetry · Scalar
Year
2024 — Present
Status
Active

概要

MineAuthは、マインクラフトサーバー上で動作するOAuth 2/OpenID Connectの認証基盤を提供するプラグインです。 各種プラグインやサーバー側で持っているプレイヤー情報をもとに、Webアプリケーションや外部サービスからプレイヤーデータを安全に扱えるようにするために開発したプラグインです。

1: MoriPathのスクリーンショット

制作背景

MineAuth は、MinecraftサーバーにSSOを導入し、Webアプリケーションや外部サービスからプレイヤーデータを安全に扱えるようにするために開発したプラグインです。

私の所属するもりのパーティでは、Minecraftサーバーを運用しており、それに付随するWebサイトや公式Wiki、また作成中ではありますがMoriPathと呼ばれるユーザー向けのアプリケーションを開発・運用しています。MoriPathでは、ユーザーそれぞれの情報をアプリケーション上で閲覧、操作するために、外部からアクセスできるAPIを提供する必要がありました。また、構想段階ではありましたが、Wikiなどの管理画面においても、サーバーに参加しているどのプレイヤーが記述したのか、編集したのかを管理するために、プレイヤーの認証情報があると便利だと考えていました。そのため、シングルサインオンの仕組みを持つ認証基盤が必要だと考え、MineAuthを開発しました。


認証基盤

認証基盤としては、KeycloakOry Hydra などの導入も検討しました。これらはセキュリティ面で実績があり、OIDCプロバイダーとして信頼性の高い選択肢です。しかし、Minecraftサーバーと連携する場合、別サーバーや外部データベースの運用が必要となり、Minecraft特有のプレイヤーデータとの統合も求められるため、全体の構成が複雑になりがちであると感じました。

また、Minecraftにはコマンドの実行などに「permission」という概念があり、これと連携することで運用管理をよりスムーズにできると考えました。実際、多くのMinecraftサーバーではLuckPermsという権限管理プラグインが広く使われています。MineAuthはこのLuckPermsとも連携し、Minecraft内外で一貫した権限管理を実現しています。


拡張性

また、MineAuthは認証だけでなく、外部プラグインがアドオンとしてAPIを追加できる基盤としても設計しています。他のプラグインはMineAuthにAPIエンドポイントを登録でき、自分のプラグインが持つデータや操作を、MineAuthの認証・認可を通して外部に公開できます。これにより、各プラグインが個別に認証機能を実装する必要がなくなり、Minecraftサーバー全体のAPI基盤として利用できます。

さらに、ScalarによるAPIドキュメントで追加されたエンドポイントを確認しやすくし、OpenTelemetryによるトレーシングでAPIリクエストや内部処理の流れも追えるようにしました。Minecraftプラグインに、SSO・OIDC・拡張可能なAPI基盤・Observabilityの考え方を取り入れたプロジェクトです。

2: ScalarによるAPIドキュメント