Sobre o projeto
Ling Yggdrasil é um sistema de autenticação externa Yggdrasil para Minecraft, totalmente compatível com o ecossistema authlib, oferecendo registro de contas, login, gerenciamento de personagens e hospedagem de skins/capas. Inclui assistente de instalação web, painel de controle com estilo anime e sistema de segurança em múltiplas camadas, permitindo configurar um serviço de login externo seguro e bonito em minutos.
## Início Rápido
Requisitos de ambiente: Java 25 (recomendado; suporta teoricamente Java 21+), recomendado pelo menos 512 MB de memória disponível.
Início em três passos:
1. Confirme a versão do Java
2. Baixe LingYggdrasil-2.2.7.jar e coloque em um diretório vazio separado
3. Inicie (este diretório se tornará o diretório de dados)
No primeiro início, o assistente de instalação será aberto automaticamente (`http://<endereço do servidor>:35598`), siga as instruções para configurar a conta de administrador, banco de dados e e-mail. Após a instalação, o programa fornecerá três serviços simultaneamente:
| Porta | Uso | Acesso |
|------|------|----------|
| 35565 | Lado do usuário (registro, login, painel, skins, amigos, etc.) | Público |
| 35577 | API Yggdrasil (para uso pelos launchers do Minecraft) | Público |
| 35599 | Painel administrativo | Deve permanecer privado |
| 35598 | Assistente de instalação | Apenas na primeira instalação |
## Recursos
### Pronto para uso
- Assistente de instalação web: guia automaticamente na configuração da conta de administrador, banco de dados e serviço de e-mail no primeiro início
- Suporte a múltiplos bancos de dados: SQLite, MySQL, PostgreSQL
- Implantação em JAR único: empacotado como um único JAR executável
### Sistema de plugins
- Carregamento de plugins externos: escaneia automaticamente o diretório `plugins/` e carrega os JARs de plugins na inicialização
- Descrição `plugin.yml`: estilo Paper, declara nome, versão, autor, dependências, ícone e nós de permissão
- Gerenciamento de plugins no painel: suporta iniciar/parar manualmente
- Submenu de plugins: plugins podem ser registrados em até um submenu no painel administrativo
- Nós de permissão dinâmicos: nós integrados e de plugins são registrados dinamicamente pela origem
- API de desenvolvimento de plugins: a compilação produz `LingYggdrasil-plugin-api-2.2.7.jar`
### Sistema de segurança
- Criptografia de senha Argon2: 6 níveis de intensidade ajustáveis
- Verificação de e-mail: suporta listas de permissão/negação de domínios
- Limite de registro por IP: previne registros em massa
- Lista negra de nomes: suporta curingas
- Sistema de sessão independente: lado do usuário, lado administrativo e API usam cookies de sessão isolados
- Proteção de integridade do root: verifica a tabela `root_info`
- Limitação de login e operações: todas as operações críticas têm limites de frequência
### Lado do usuário
- Gerenciamento de personagens: crie múltiplos personagens, cada um com Token Yggdrasil e UUID independentes
- Skins e capas: envie e gerencie skins e capas pessoais, com nomes alternativos e controle público/privado
- Biblioteca de texturas: praça pública de materiais, ordenada por popularidade, com rolagem infinita e carregamento preguiçoso
- Curtidas e favoritos: curta materiais para ajudar a impulsioná-los
- Materiais compartilhados: seções de compartilhamento com amigos e meus favoritos
- Sistema de amigos: adicionar por código de amigo, cartão de detalhes do amigo, gerenciamento de bloqueio, compartilhamento de materiais por seleção
- Pré-visualização 3D de skins: integra skinview3d, suporta rotação de 360°
- Configurações de segurança: altere senha, e-mail e apelido, visualize e regenere Tokens
- Logs de operação: visualize, baixe e limpe seus próprios logs
- Temas e idiomas: alternância entre temas claro/escuro, 10 idiomas persistidos por conta
### Painel administrativo
- Visão geral do dashboard: dados principais como número de usuários, personagens, skins/capas, com componentes arrastáveis para ordenação
- Gerenciamento de usuários: visualize, pesquise, crie, edite e banir usuários
- Gerenciamento de personagens: CRUD global, suporta alteração de nome, transferência de propriedade e alternância de forma
- Gerenciamento de skins e capas: gerencie recursos de textura globalmente, configure tamanho de upload, quantidade, caminho de armazenamento e limites de frequência
- Configurações de segurança: cartões visuais para 6 níveis de criptografia
- Gerenciamento do sistema: informações do site, interruptores de recursos, domínios, anúncios, registro ICP, logs de operação, etc., em grupos
- Grupos de permissão: grupos de permissão de administrador e de usuário, com controle fino de visibilidade de menus e disponibilidade de funções
- Configurações do mundo: algoritmo de assinatura, validade do Token, limites de frequência, versão do UUID e outras configurações de protocolo
### Protocolo Yggdrasil
- Implementação completa do protocolo: compatível com a autenticação Yggdrasil dos launchers principais do Minecraft
- Três modos de assinatura: Ed448 (moderno), RSA-SHA512, RSA-SHA1 (compatível)
- Sistema de Token: cada personagem gera automaticamente um Token de 64 bits de alta segurança
- Hospedagem de texturas: endpoint público `/textures/{tipo}/{hash}`
- Gerenciamento de sessão: fluxo completo de login, logout e validação de sessão
- Extensões de consulta convenientes: endpoints de consulta por nome e em lote
### Internacionalização
Inclui 10 idiomas: Chinês simplificado, Chinês tradicional, Chinês (Huaxia), Inglês, Russo, Alemão, Francês, Italiano, Japonês e Coreano. Os pacotes de idioma são em formato JSON, com suporte a sobrescrita externa e mesclagem profunda.
## Integração com clientes
Usando um launcher como HMCL que suporta Yggdrasil personalizado como exemplo:
1. Nas configurações de "Conta" ou "Método de login" do launcher, selecione "Yggdrasil personalizado / Login externo"
2. Preencha o endereço do servidor de autenticação com o endereço raiz da API (por exemplo, `https://example.com`, ou `http://<IP>:35577` para conexão direta)
3. O nome de usuário é o nome do personagem, e a senha é o Token Yggdrasil desse personagem
## Pilha tecnológica
| Componente | Tecnologia |
|------|------|
| Linguagem | Java 25 |
| Framework web | Javalin |
| Conexão com banco de dados | Pool HikariCP |
| Banco de dados | SQLite / MySQL / PostgreSQL |
| Criptografia | Bouncy Castle (Argon2, Ed448, RSA) |
| E-mail | Eclipse Angus Mail |
| Logs | Logback + SLF4J |
| Serialização | Jackson |
| Ferramenta de build | Maven |
## Licença
Este projeto é licenciado sob a GNU Affero General Public License v3.0.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.