Documentação oficial

Autenticação e MFA

Referência técnica de Autenticação e MFA — Joss language and Joss Red ecosystem.

Autenticação e segundo fator

Índice · Antes: HTTP , modelos · Depois: middleware MIDDLEWARE.md

Autenticar é verificar quem faz uma solicitação. Autorizar é decidir o que essa pessoa pode fazer. Auth integra usuários, senhas e JWT, mas uma chamada como update(id,data) não substitui as verificações de permissões do driver . As operações

requerem conexão, tabelas de autenticação e segredos configurados. Um JWT é um token assinado; não deve ser confundido com uma senha ou publicado em logs. Esta referência descreve o código local, ela não certifica a segurança de um aplicativo implementado.

Consulta o fragmento

do usuário atual para um controlador com sessão já validada:

var $usuario = Auth::user()
$usuario != null ? {
    print($usuario->email)
} : {
    print("Sin sesion")
}

user() retorna instância ou nulo, não mapa ou JSON. Utilize -> ; para um ID prefere Auth::id() . Passa os campos escalares selecionados para visualizações em vez de em toda a instância.

Contratos de autenticação

Assinatura Retorno e efeito
hash(contraseña) Hash bcrypt como string ou nulo em caso de falha.
create(mapaDatos) Token do usuário ou falso dependendo da inserção; requer dados de esquema. Não é envio automático.
attempt(email,contraseña) JWT ou falso; valida credenciais de acordo com as regras da tabela. Ele próprio não incorpora todo o fluxo de fluido MFA.
login(email,contraseña) AuthLoginResult ou null para argumentos insuficientes.
check() , guest() Bool no contexto da sessão.
user() , id() Instância/ID atual ou nulo.
hasRole(nombre) Bool; não verifica a propriedade de um recurso.
validateToken(token) Bool; verifica o JWT e preenche novamente o contexto da sessão.
refresh(id) JWT renovado ou falso/nulo; autoriza primeiro quem pode solicitá-lo.
update(id,mapa) , delete(id) Bool ou nulo dependendo dos argumentos/falha; modificar usuários.
logout() Limpe o contexto e retorne verdadeiro. Isso não implica revogação global de todos os JWT emitidos.
verify(token) Verifique o token de confirmação do e-mail, retorne bool.
verificationStatus(email) not_found, verificado ou não verificado.
resendVerification(email) token de verificação ou falso; a entrega da mensagem fica por conta do aplicativo.
forgotPassword(email) Token de recuperação ou falso; Não é confirmação de envio SMTP.
resetPassword(token,nueva) texto verdadeiro ou de erro: invalid_token, fraca_password, database_error, used_token, expired_token. Compare com a verdade, não apenas com a veracidade do texto.
verify2FAChallenge(token,codigo) JWT final ou falso após verificar o desafio e o código (suporta App TOTP e Email OTP).
complete2FA(id) Gera JWT após busca pelo usuário; não verifica um código TOTP em si. Não exponha como um endpoint público com um ID fornecido pelo cliente.
enabledSocialProviders() Array de provedores OAuth habilitados no ambiente atual (google, apple, facebook, x, github, twitch, yahoo, microsoft).
socialRedirect(proveedor,urlRetorno) URL de redirecionamento OAuth para o provedor indicado.
socialCallback(proveedor,codigo,urlRetorno) AuthLoginResult processado após a troca do código e registro/vinculação do usuário.

Resultado suave e retornos de chamada

AuthLoginResult preserva sucesso, erro, usuário e resposta. A avaliação de dois fatores (2FA) é realizada automaticamente em Auth::login (detectando aplicativos autenticadores TOTP e OTP por e-mail):

Método Quando ligar para retorno de chamada Parâmetro
onSuccess(callback) Credenciais corretas e nenhum desafio necessário. JWT.
onChallenge(callback) Credenciais corretas e desafio necessário (App TOTP ou Email OTP). Desafie o JWT temporário.
onFail(callback) Credenciais incorretas. Mensagem de erro.
response() Retorna o resultado do retorno de chamada executado ou nulo. Nenhum.

Os retornos de chamada de origem devem digitar seus parâmetros, por exemplo func(mixed $token) { return Response::json({"token": $token}) } . Não mostre um token final antes de terminar o desafio.

MFA e TwoFactor

Assinatura Contrato
MFA::generateTOTP() Segredo do mapa, qr_uri e qr_url. qr_uri é URI codificado; qr_url aponta para um serviço QR externo e inclui o segredo. Mostrar esse URL enviaria o segredo para esse serviço.
MFA::verifyTOTP(secreto,codigo) Bool de acordo com a janela de tempo implementada.
MFA::generateRecoveryCodes() Matriz de código. A persistência e sua associação ao usuário exigem o fluxo da aplicação.
MFA::verifyRecoveryCode(id,codigo) Consulte os códigos salvos, verifique e consuma aquele que corresponde.
TwoFactor::required(usuario) Bool sobre instâncias e registros de MFA.
TwoFactor::verify(id,codigo) Bool; Obtém segredo dos métodos MFA do usuário.

O gerador TOTP nesta implementação usa matemática/rand e constrói uma URL externa com o segredo. Estas são descobertas que necessitam de revisão de segurança; não são apresentados como garantias criptográficas do framework.

Mail

SmtpClient é uma classe nativa separada. auth(usuario,contraseña) , secure(bool) e timeout(segundos) configuram e retornam sua instância; send(destinatario,asunto,cuerpo) retorna bool e lastError() retorna o último erro textual. Requer servidor SMTP e configuração MAIL_* de acordo com smtp_native.go . A criação de um token não envia esse email.

Autenticação Social (OAuth 2.0)

O Joss oferece suporte nativo para login e vinculação de contas com 8 provedores OAuth. Cada provedor é ativado automaticamente quando você define suas duas variáveis de ambiente no arquivo .env ou env.joss:

Provedor Variável Client ID Variável Client Secret
Google GOOGLE_CLIENT_ID GOOGLE_CLIENT_SECRET
GitHub GITHUB_CLIENT_ID GITHUB_CLIENT_SECRET
Microsoft MICROSOFT_CLIENT_ID MICROSOFT_CLIENT_SECRET
X (Twitter) X_CLIENT_ID X_CLIENT_SECRET
Facebook FACEBOOK_CLIENT_ID FACEBOOK_CLIENT_SECRET
Apple APPLE_CLIENT_ID APPLE_CLIENT_SECRET
Twitch TWITCH_CLIENT_ID TWITCH_CLIENT_SECRET
Yahoo YAHOO_CLIENT_ID YAHOO_CLIENT_SECRET

A URL de redirecionamento (callback) registrada no console de desenvolvedor deve apontar para:

https://tu-dominio.com/auth/{proveedor}/callback
  • Auth::enabledSocialProviders() retorna apenas a lista de provedores com credenciais configuradas.
  • Auth::socialRedirect(proveedor, urlRetorno) gera a URL segura para o provedor OAuth com proteção state anti-CSRF.
  • Auth::socialCallback(proveedor, codigo, urlRetorno) troca o código, recupera o perfil, vincula em user_social_accounts e retorna um AuthLoginResult.

Fontes: Auth , OAuth Social , JWT , Fluxo MFA , Tabelas ../pkg/core/auth_tables.go .