AzAuth
AzAuth é uma API que permite autenticar usuários de um site da Azuriom em qualquer plataforma.
Independentemente de como você usa a API de autenticação do lado do cliente, você deve verificar no servidor se o token de acesso retornado pelo cliente é válido usando o métodoverify
.
Download
O código fonte do AzAuth estão disponíveis no GitHub e o arquivo jar pode ser baixado aqui.
Se você estiver usando um gerenciador de dependências, poderá adicionar o AzAuth como uma dependência da seguinte maneira:
Gradle
No build.gradle
:
repositories {
mavenCentral()
}
dependencies {
implementation 'com.azuriom:azauth:1.0.0'
}
Maven
No pom.xml
:
<dependencies>
<dependency>
<groupId>com.azuriom</groupId>
<artifactId>azauth</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
AzAuth usage (Java)
Antes de usar o AzAuth, verifique se a API está ativada acessando as configurações do seu site, no painel de administração.
Uso sem OpenLauncherLib
AzAuth foi projetado com Gson como sua única dependência, então você pode usá-lo perfeitamente bem se você não usar OpenLauncherLib, você pode simplesmente usar AuthClient#authenticate(String username, String password, Supplier<String> codeSupplier)
e isso lhe dará diretamente um User
contendo um username, uuid, rank, access token e muitos outros dados úteis. O codeSupplier
é chamado quando o usuário possui 2FA habilitado, e o código do usuário deve ser devolvido ao fornecedor.
Usando com OpenLauncherLib (para minecraft launcher)
Para começar, adicione o AzAuth como uma dependência ao seu projeto. Além disso, se você estiver usando OpenAuth, é recomendável removê-lo, embora não cause nenhum problema real, não é mais usado se você usar o AzAuth.
Você deve ter no código do seu launcher um método auth
similar ao código abaixo:
public static void auth(String username, String password) throws AuthenticationException {
Authenticator authenticator = new Authenticator(Authenticator.MOJANG_AUTH_URL, AuthPoints.NORMAL_AUTH_POINTS);
AuthResponse response = authenticator.authenticate(AuthAgent.MINECRAFT, username, password, "");
authInfos = new AuthInfos(response.getSelectedProfile().getName(), response.getAccessToken(), response.getSelectedProfile().getId());
}
Basta substituí-lo pelo código abaixo, para modificar <url>
pela URL do root do seu site Azuriom.
public static void auth(String username, String password) throws AuthException {
AuthClient authenticator = new AuthClient("<url>");
authInfos = authenticator.login(username, password, () -> {
String code = null;
while (code == null || code.isEmpty()) {
// The parent component for the dialog. You should replace the code
// below with an instance of your launcher frame/panel/etc
Container parentComponent = LauncherFrame.getInstance().getLauncherPanel();
parentComponent.setVisible(true);
code = JOptionPane.showInputDialog(parentComponent, "Enter your 2FA code", "2FA", JOptionPane.PLAIN_MESSAGE);
}
return code;
}, AuthInfos.class);
}
Uso com JavaScript
Instalação
O código fonte está disponível no GitHub e o pacote pode ser instalado com npm:
npm install azuriom-auth
Exemplo
import { AuthClient } from 'azuriom-auth'
async function login(email, password) {
const client = new AuthClient('<url of your website>')
let result = await client.login(email, password)
if (result.status === 'pending' && result.requires2fa) {
const twoFactorCode = '' // IMPORTANT: Replace with the 2FA user temporary code
result = await client.login(email, password, twoFactorCode)
}
if (result.status !== 'success') {
throw 'Unexpected result: ' + JSON.stringify(result)
}
return result
}
Endpoints
Authentification
POST /authenticate
Autenticar um usuário com as credenciais do site
Request
Campo | Descrição |
---|---|
Username ou endereço de e-mail | |
password | Password |
code | Código 2FA, deve ser incluído apenas se a resposta status for pending e o reason for 2fa |
Response
Retorna o usuário com suas diversas informações, e o token único que pode ser usado para verificar a conexão ou desconectar.
{
"id": 1,
"username": "Username",
"uuid": "00000000-0000-0000-0000-000000000000",
"email_verified": true,
"money": 100.0,
"role": {
"name": "Member",
"color": "#e10d11"
},
"banned": false,
"created_at": "2020-06-29T17:39:12+00:00",
"access_token": "xxxxxxxx"
}
Verification
POST /verify
Request
Campo | Descrição |
---|---|
access_token | Token de acesso exclusivo |
Response
Retorna o usuário com suas diversas informações, e o token único que pode ser usado para verificar a conexão ou desconectar.
Exemplo de response de sucesso (HTTP 2xx
):
{
"id": 1,
"username": "Username",
"uuid": "00000000-0000-0000-0000-000000000000",
"email_verified": true,
"money": 100.0,
"role": {
"name": "Member",
"color": "#e10d11"
},
"banned": false,
"created_at": "2020-06-29T17:39:12+00:00",
"access_token": "xxxxxxxx"
}
Exemplo de response de erro (HTTP 4xx
):
{
"status": "error",
"reason": "invalid_credentials",
"message": "Invalid credentials"
}
Logout
POST /logout
Faça logout do usuário e invalide o token de acesso.
Request
Campo | Descrição |
---|---|
access_token | Token de acesso exclusivo |
Response
Response vazia, com código de status 2xx
.