Serviços para a sua aplicação
CLAUDO Auth
Cadastro e login dos usuários da sua aplicação, com JWT e OpenID Connect.
Ligar
Em Auth, escolha o projeto e clique em Ligar Auth. Com a opção marcada, CLAUDO_AUTH_URL (o emissor dos tokens) e CLAUDO_AUTH_CLIENT_ID vão para Production. Em Ajustes ficam o nome nas páginas, os endereços de retorno do login, os sites que chamam pelo navegador, a senha mínima, a duração do token e da sessão, e se o e-mail precisa ser confirmado.
Os usuários do Auth são da sua aplicação: nunca entram no painel da CLAUDO. Free até 5.000 usuários, Pro 100.000, Scale 1.000.000, somando as aplicações da organização.
Jeito mais simples: login pronto (OpenID Connect)
A CLAUDO hospeda as páginas de entrar, criar conta, esqueci a senha, código no e-mail e dois fatores. Use qualquer biblioteca OpenID Connect com o emissor CLAUDO_AUTH_URL (descoberta em /.well-known/openid-configuration), fluxo de código com PKCE S256. Cadastre o endereço de retorno em Ajustes.
providers: [
{
id: "claudo",
name: "CLAUDO",
type: "oidc",
issuer: process.env.CLAUDO_AUTH_URL,
clientId: process.env.CLAUDO_AUTH_CLIENT_ID,
clientSecret: process.env.CLAUDO_AUTH_SECRET_KEY,
},
],
// retorno: https://seu-site/api/auth/callback/claudoA chave secreta (claudo_auth_sk_...) é criada em Chaves secretas e pode ir sozinha para CLAUDO_AUTH_SECRET_KEY. Só no servidor: chamada com ela vinda de navegador é recusada.
Conferir o token na sua API
import { createRemoteJWKSet, jwtVerify } from "jose";
const issuer = process.env.CLAUDO_AUTH_URL!;
const jwks = createRemoteJWKSet(new URL(`${issuer}/.well-known/jwks.json`));
export async function usuario(token: string) {
const { payload } = await jwtVerify(token, jwks, {
issuer,
audience: process.env.CLAUDO_AUTH_CLIENT_ID,
});
return { id: payload.sub, email: payload.email };
}O token de acesso é RS256, com sub, email, email_verified, sid, iss e aud (o client_id). Depois de trocar a chave de assinatura, a antiga segue no JWKS por 24 horas.
API direta (telas próprias)
Para montar as próprias telas, chame os caminhos abaixo do emissor (CLAUDO_AUTH_URL/...), com JSON. Do navegador, só a partir dos sites cadastrados em Ajustes.
| Chamada | Corpo | Devolve |
|---|---|---|
POST signup | email, password, name | tokens, ou aviso de confirmar o e-mail |
POST signin | email, password | tokens, ou mfa_required e mfa_token |
POST otp/send e otp/verify | email e depois code | login por código no e-mail |
POST mfa/verify | mfa_token, code | tokens (código do app ou de recuperação) |
POST token | grant_type=refresh_token, refresh_token | tokens novos |
POST signout | refresh_token | fim da sessão |
POST recover | email | e-mail para trocar a senha |
GET user | cabeçalho Authorization: Bearer <token> | o usuário |
Os tokens vêm como { access_token, token_type, expires_in, refresh_token, user }. Erros como { error: { code, message } }. Do servidor, com a chave secreta, admin/users lista, cria, altera e apaga usuários.
Google, GitHub e dois fatores
- Entrar com Google e GitHub usa o app OAuth da sua conta em cada um; o endereço de retorno a cadastrar lá aparece no painel. Funciona pelo login pronto.
- Dois fatores (TOTP): o usuário liga em
mfa/totp/enrollemfa/totp/confirm, e recebe 10 códigos de recuperação. - Os e-mails de confirmação e de troca de senha saem pela CLAUDO.
- Domínio próprio nas páginas de login ainda não existe.