GET /auth/oauth/{provider}/start
Inicia o fluxo OAuth redirecionando pro provider.
- Acesso: Pública
- Serviço:
https://auth-api.axuz.net
Autenticação aceita
Sem autenticação (rota pública ou protegida por link/assinatura).
Inicia o fluxo OAuth redirecionando pro provider.
Motivo: entrypoint quando o usuário clica "Sign in with Google/GitHub"; gera state assinado com next embutido pra proteger contra CSRF + open redirect no callback. Comportamento: resolve Provider; se nulo ou não Configured → recusa via refuseOAuthProvider (503 sem credencial / 501 provider desconhecido — O-034); valida next via IsTrustedRedirect (descarta se malicioso); State.Issue(next) para embutir/assinar; wave 9: grava o cookie tx (axuz_oauth_tx: verifier PKCE + nonce + hash do state, assinado) e, se o provider fala PKCE (Google), redireciona com code_challenge S256 + nonce; senão http.Redirect(302) pra AuthURL(state).
Entradas: chi URL param "provider"; query next (opcional).
Retorno: 302 pro provider; 503 quando o provider existe mas não tem credencial; 501 quando o nome do provider é desconhecido; 500 se State.Issue falha. Efeito: emite Location header + Set-Cookie axuz_oauth_tx; nenhum DB.
Parâmetros
| Nome | Em | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
provider | path | string | sim |
Respostas
200
Sucesso.
302
Pro provider
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
error | string | sim |
429
Limite de requisições excedido.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
error | string | sim |
500
Se State.Issue falha. Efeito: emite Location header + Set-Cookie axuz_oauth_tx
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
error | string | sim |
501
Quando o nome do provider é desconhecido
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
error | string | sim |
503
Quando o provider existe mas não tem credencial
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
error | string | sim |
Exemplos
O "Try it" está desligado nesta referência. Use os exemplos com a sua credencial de teste.
curl
curl -sS -X GET 'https://auth-api.axuz.net/auth/oauth/PROVIDER/start'Node.js
const res = await fetch("https://auth-api.axuz.net/auth/oauth/PROVIDER/start", {
method: 'GET',
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
console.log(await res.json());Python
import os
import requests
res = requests.request(
"GET",
"https://auth-api.axuz.net/auth/oauth/PROVIDER/start",
timeout=30,
)
res.raise_for_status()
print(res.json())