O Logto v1.46.0 já chegou. Traz autenticação step-up OIDC, Iniciar Sessão com Ethereum, uma forma de manter o pedido de Guardar Palavra-passe no iOS, tokens de acesso pessoal self-service e um reforço geral de segurança.
SimengDeveloper
Pare de perder semanas com autenticação de utilizadores
Lance aplicações seguras mais rapidamente com o Logto. Integre a autenticação de utilizadores em minutos e concentre-se no seu produto principal.
O Logto v1.46.0 introduz autenticação step-up OIDC para ações sensíveis, Iniciar Sessão com Ethereum, uma forma de manter o pedido "Guardar Palavra-passe" no iOS, tokens de acesso pessoal self-service no Centro de Conta, juntamente com o CAPTCHA GeeTest, atributos estáticos SAML e uma ronda de reforço de segurança. Eis as novidades.
As aplicações podem agora exigir uma sessão recente ou mais forte antes de ações sensíveis, utilizando os parâmetros OIDC padrão.
Solicitar e verificar: Envia acr_values e max_age no pedido de autorização e depois lê acr, amr e auth_time dos tokens de identificação, tokens de acesso e respostas de introspeção. Os valores ACR suportados são anunciados no documento de descoberta.
Integrado no Centro de Conta: O Centro de Conta agora autoriza operações sensíveis da API da Conta com um token de acesso de primeira parte recente. Quando a sessão não for suficientemente recente, a API da Conta responde com um desafio step-up RFC 9470.
Janela configurável: Define quão recente tem de ser o início de sessão em Consola > Experiência de início de sessão > Centro de conta > Autenticação recente (10 minutos por predefinição). Um cliente ainda pode pedir uma janela mais curta com max_age.
Compatível com versões anteriores: As aplicações que chamam a API da Conta diretamente podem continuar a usar um ID de registo de verificação para operações sensíveis.
O novo conector social Ethereum Wallet (@logto/connector-siwe) permite aos utilizadores iniciarem sessão com uma carteira EVM. Utilizadores com uma carteira de browser (um provider EIP-1193 injetado) assinam uma mensagem pontual de Iniciar Sessão com Ethereum (EIP-4361) sem sair da página de login. Um endereço funciona em todas as cadeias EVM suportadas e os administradores podem restringir os IDs de cadeia permitidos.
No iOS, o ASWebAuthenticationSession fecha logo que vê o URL de retorno da aplicação, o que faz desaparecer o pedido de "Guardar Palavra-passe" do sistema logo após o início de sessão por palavra-passe.
Envia o novo parâmetro de início de sessão confirm_redirect_policy=password para mostrar uma página "Continuar" depois de o utilizador inserir a palavra-passe. A página só regressa à aplicação quando o utilizador seleciona "Continuar", mantendo assim o pedido visível. Sem este parâmetro, o Logto redireciona de imediato, como anteriormente.
Quando os tokens de acesso pessoal estão ativos no Centro de Conta, os utilizadores podem criar, renomear e revogar os seus próprios tokens na página Segurança do Centro de Conta. Cada token é mostrado apenas uma vez na criação e expira dentro de 365 dias.
As mesmas operações estão disponíveis através da API da Conta em /api/my-account/personal-access-tokens, com o novo scope urn:logto:scope:personal_access_tokens.
CAPTCHA GeeTest: O GeeTest CAPTCHA v4 já está disponível em Consola > Segurança > CAPTCHA. É adequado para experiências de início de sessão focadas na China continental, onde o Google reCAPTCHA é frequentemente inacessível.
Exigir configuração de MFA para um utilizador: Ativa a opção Requer configuração de MFA na página de detalhes do utilizador ou define mfa.required através da API de Gestão. O utilizador tem de configurar MFA no próximo início de sessão, independentemente da política de MFA da organização.
Desbloquear um utilizador: Uma nova ação de desbloqueio na página de detalhes do utilizador limpa bloqueios de início de sessão e de verificação de segurança para o ID, e-mail principal, telefone principal e nome de utilizador de uma só vez.
Importação de palavra-passe SHA-crypt: Importa utilizadores com hashes de palavra-passe SHA-crypt ($5$ e $6$) usando o algoritmo de palavra-passe Legacy.
access_denied quando o início de sessão é cancelado: Cancelar a página de consentimento ou falhar um início de sessão direto agora devolve o utilizador à aplicação cliente com access_denied. Experiências de início de sessão personalizadas também podem terminar uma interação deste modo via POST /api/experience/abort.
login_hint para o Centro de Conta: Acrescenta login_hint a qualquer URL do Centro de Conta para pré-preencher o identificador quando o utilizador precisar de iniciar sessão.
Atributos estáticos SAML: Envia valores de atributos fixos, como um ID de conta ou site, em cada asserção SAML. Configura-os na secção Atributos estáticos do separador de mapeamento de atributos da aplicação SAML ou com staticAttributes na API de Gestão.
Cross-Origin-Opener-Policy para Personaliza o teu UI: Escolhe same-origin-allow-popups ou same-origin em Consola > Experiência de início de sessão > Personalização > Personaliza o teu UI. Por predefinição não é enviado nenhum cabeçalho, para que aplicações que abrem a janela de login em popup continuem a funcionar.
Pesquisar utilizadores por dados personalizados: GET /api/users aceita o parâmetro query repetível customData, por exemplo customData={"customId":114514}.
Encontrar organizações por domínio de provisionamento just-in-time: GET /api/organizations aceita o parâmetro query jitEmailDomain, que devolve as organizações onde um utilizador com esse domínio de e-mail seria provisionado.
hasPassword para membros da organização: GET /api/organizations/:id/users mostra agora se cada membro tem uma palavra-passe definida.
Webhook deliveryId: Cada payload de webhook inclui agora um deliveryId, que permanece idêntico entre tentativas, para que os recetores possam processar cada entrega apenas uma vez. Este é também o ID do registo de auditoria da entrega.
Esta versão inclui correções de segurança no MFA, login social e empresarial, API da Conta e Logto Tunnel.
Ação necessária: sincronização de e-mails para conectores OAuth 2.0 e Azure AD: O conector social OAuth 2.0 adiciona o botão Desativar Sincronização de E-mail, em linha com o conector Microsoft Azure AD. Apenas atualizar não altera o comportamento dos conectores existentes, por isso analisa cada conector social OAuth 2.0 e Azure AD e ativa a opção quando o fornecedor não verifica que o utilizador é proprietário do e-mail devolvido.
Iniciar sessão com Apple: O conector Apple obtém agora o e-mail do utilizador apenas do token Apple ID e não devolve e-mail quando não verificado pela Apple.
Autenticação multifator: Exigências de MFA ao nível do utilizador e organização agora prevalecem sobre definições de conta que desligam ou saltam MFA, e as verificações MFA estão ligadas à conta para que foram criadas.
SSO Empresarial: Conectores SAML só aceitam uma asserção quando o seu público corresponde exatamente ao Audience URI (SP Entity ID) do conector. Uma nova definição controla se nomes e logótipos de conectores SSO aparecem na página de login antes de coincidir o domínio do e-mail.
API de Conta e apps de terceiros: Recuperar tokens de fornecedores sociais ou SSO empresariais armazenados, e ler códigos de backup, sessões, concessões e dispositivos confiáveis, agora exige uma aplicação de primeira parte.
Mais ajustes: Códigos de autorização, device codes, pedidos de autorização "pushed" e tokens de uso único agora são estritamente de utilização única. Erros de pedidos aos conectores são reduzidos ao nome, código e mensagem antes de serem registados ou devolvidos. Pedidos SAML malformados são rejeitados com 400. O Logto Tunnel resolve links simbólicos e limita pedidos Range ao fornecer ficheiros estáticos.
Safari e iOS mais antigos: A página de login já não aparece em branco no iOS e Safari anteriores à versão 16.4.
Erros de login social mais claros: Um fornecedor inalcançável agora retorna 502 connector.social_provider_unreachable, uma autorização recusada retorna 401 connector.authorization_failed, e erros do conector mostram a mensagem real do fornecedor em vez de {}.
Valores scope com espaço: Pedidos de refresh token de clientes como OpenAI Codex que enviam um scope com espaço à esquerda já não falham com invalid_scope, mantendo assim o utilizador ligado.
Validação de metadados de aplicação: Criar ou atualizar uma aplicação agora rejeita chaves desconhecidas em customClientMetadata, pelo que erros como refreshTokenTtlInDay já não passam despercebidos.
Links de paginação: Os links de paginação nos endpoints de listagem mantêm agora todos os valores de parâmetros de query repetidos.
Placeholders de atributos SAML: Atributos mapeados com nomes como o365role já apresentam o valor real do utilizador em vez de um placeholder literal.
Correções nos conectores: Conectores OAuth 2.0 e OIDC padrão aceitam expires_in como string e scope como array nas respostas de token, e o conector Patreon muda para a API v2 do Patreon para que o login no Patreon volte a funcionar.
Consola e Centro de Conta: A pesquisa de organizações funciona nas regras de controlo de acesso da aplicação, os nomes dos recursos da API aparecem completos ao atribuir permissões e o Centro de Conta já não mostra "Powered by Logto" ao carregar se o branding estiver oculto.
Guia de integração Swift: Os exemplos de código usam agora um nome de cliente consistente, corrigindo o erro Cannot find 'client' in scope. (Obrigado ao @timokoethe).
Rever antes de atualizar: Verifica a sincronização de e-mails em OAuth 2.0 e Azure AD, o público da asserção SAML e as alterações à API de Conta de terceiros sob Reforço de segurança.
Node.js 26: A imagem oficial Docker agora corre em Node.js 26. O Logto suporta Node.js 22, 24 e 26, com versões mínimas 22.23.4, 24.22.1 e 26.12.1.
Migração de base de dados obrigatória: Executa o comando de alteração da base de dados (logto db alteration deploy) após atualizar e antes de iniciar a nova versão.
Arranque mais resiliente: Os comandos da base de dados no núcleo e CLI agora tentam novamente ligar à base de dados em caso de falhas DNS, em vez de sair imediatamente.
Aviso de endpoint admin: O Logto agora regista um aviso quando um pedido a /console não corresponde a nenhum endpoint admin configurado, facilitando a identificação de um ADMIN_ENDPOINT mal configurado.
Obrigado aos membros da comunidade cujo trabalho foi incluído nesta versão:
@nicolaj0: webhook deliveryId (#9882), hasPassword para membros da organização (#9883), filtro de organização por domínio de provisionamento just-in-time (#9912), validação da chave customClientMetadata (#9931), erros de login social mais claros (#9879, #9880), tentativas de ligação à base de dados (#9881, #9928), e tratamento de erros de pedidos aos conectores (#9849)
@RaphaelFakhri: parâmetros de query repetidos nos links de paginação (#9811) (primeira contribuição)