Esta página foi traduzida automaticamente. Leia a versão original em inglês aqui.
| Abordagem | Adoção | Criar chaves de acesso | Usar chaves de acesso | Gerir chaves de acesso | Complexidade técnica | Suporte OAuth |
|---|---|---|---|---|---|---|
| Implementação nativa | 🟢🟢🟢 | Alta adoção, melhor UX, biometria perfeita | Autenticação instantânea e silenciosa | Controlo nativo total | Média-Alta | Requer fluxo separado |
| System WebView | 🟢🟢 | Boa adoção, experiência semelhante a navegador | UX de navegador padrão, keychain partilhado | Gestão baseada em navegador | Baixa | Excelente |
| Embedded WebView | 🟢 | Menor adoção, requer mais configuração | Suporte nativo iOS e Android (WebKit 1.12.1+), sem Conditional UI | Controlo limitado | Média-Alta | N/A |
Nota: System e Embedded WebView são frequentemente combinados, onde o System WebView gere o início de sessão (com partilha automática de credenciais), e o Embedded WebView apresenta a gestão de chaves de acesso nas definições.
Fatores de decisão essenciais:
As plataformas móveis modernas fornecem três abordagens distintas para integrar chaves de acesso na sua aplicação nativa, cada uma com diferentes compromissos para a experiência do utilizador, complexidade técnica e compatibilidade OAuth:
Implementação nativa: crie fluxos de chaves de acesso diretamente na sua aplicação usando APIs da plataforma (iOS AuthenticationServices, Android Credential Manager). Fornece a melhor experiência de utilizador com autenticação biométrica perfeita, mas requer um esforço de implementação técnica médio a alto.
System WebView: use o componente de navegador da plataforma (iOS ASWebAuthenticationSession / SFSafariViewController, Android Chrome Custom Tabs) para gerir a autenticação. Excelente para fluxos de início de sessão baseados em OAuth e partilha credenciais com o navegador do sistema.
Embedded WebView: incorpore uma visualização web personalizável (iOS WKWebView, Android WebView) na sua aplicação para reutilizar a autenticação web com uma estrutura de aplicação nativa. Fornece uma aparência nativa sem barras de URL e controlo total sobre a IU da visualização web. Requer configuração adicional, incluindo permissões e direitos (iOS), e configuração de WebView com AndroidX WebKit 1.12.1+ (Android) para ativar a funcionalidade de chave de acesso.
A escolha certa depende da arquitetura de autenticação da sua aplicação, se utiliza fornecedores OAuth, de quanto controlo necessita sobre a IU e se está a criar uma aplicação native-first ou a reutilizar componentes web.
Whitepaper empresarial de Passkeys. Guias práticos, padrões de implementação e KPIs para programas de passkeys.
Artigos recentes
📖
WebAuthn Relying Party ID (rpID) e passkeys: domínios e apps nativos
♟️
Por que você precisa de observabilidade da autenticação para o CIAM
🔑
Credenciais de sessão vinculadas ao dispositivo (DBSC) explicadas
♟️
Estratégia de chaves de acesso: por que a sua implementação de chaves de acesso falhará
♟️
Problemas do Dia 2 das Chaves de Acesso: 5 Riscos após o Lançamento
Uma implementação nativa de chaves de acesso proporciona a melhor experiência de utilizador, com fluxos de autenticação integrados diretamente na IU da sua aplicação utilizando APIs específicas da plataforma. Os utilizadores beneficiam de diálogos nativos da plataforma, verificação biométrica perfeita e os tempos de início de sessão mais rápidos possíveis.
Quando escolher a Implementação nativa:
preferImmediatelyAvailableCredentials para
exibir automaticamente a sobreposição de chaves de acesso
quando estas estiverem disponíveis, proporcionando a experiência de início de sessão
mais rápida sem exigir a introdução de um identificadorVantagem principal: preferImmediatelyAvailableCredentials()
As implementações nativas podem tirar partido de preferImmediatelyAvailableCredentials()
para criar uma
sobreposição automática de chave de acesso
que aparece imediatamente no arranque da aplicação quando existem chaves de acesso
disponíveis. Este fluxo sem nome de utilizador fornece a experiência de início de sessão
mais rápida possível - os utilizadores veem as suas chaves de acesso instantaneamente sem
terem de introduzir primeiro um identificador. Esta capacidade é exclusiva das
implementações nativas e não está disponível nas variantes WebView.
O diagrama abaixo ilustra como a autenticação nativa proporciona um percurso do utilizador mais rápido em comparação com a abordagem Conditional UI da WebView:
A sobreposição automática nativa proporciona uma UX superior com taxas de utilização de chaves de acesso mais elevadas, uma vez que a autenticação começa imediatamente no arranque da aplicação, enquanto as implementações WebView exigem que os utilizadores interajam primeiro com os campos de entrada.
Visão geral dos requisitos técnicos:
A integração de chaves de acesso nativas requer confiança criptográfica entre a sua aplicação e o domínio web. Sem isso, o SO rejeitará todas as operações WebAuthn. Requisitos principais:
/.well-known/A principal vantagem: as chaves de acesso criadas no seu website funcionam perfeitamente na sua aplicação e vice-versa.
A implementação de chaves de acesso nativamente no iOS envolve o framework AuthenticationServices da Apple, que fornece uma API para operações WebAuthn:
Componentes principais:
ASAuthorizationController: gere o fluxo de autenticaçãoASAuthorizationPlatformPublicKeyCredentialProvider: cria pedidos de chaves de acessoDicas de desenvolvimento
?mode=developer ao seu URL AASA para forçar
obtenções recentesA implementação de chaves de acesso nativas no Android usa a Credential Manager API (ou a API FIDO2 mais antiga para retrocompatibilidade):
Componentes principais:
CredentialManager: API central para todas as operações com credenciaisCreatePublicKeyCredentialRequest: para registo de
chave de acessoGetCredentialRequest: para autenticação com chave de acessoNota: atualmente, o Android não possui as sugestões de teclado da Conditional UI do iOS em aplicações nativas (embora a Conditional UI funcione em aplicações web).
A implementação nativa de chaves de acesso apresenta desafios e lições aprendidas importantes: a integração ao nível do SO pode trazer à superfície problemas em diferentes dispositivos e versões do SO.
Embora seja possível implementar chaves de acesso utilizando APIs de plataforma puras, SDKs específicos aceleram significativamente o desenvolvimento ao lidarem com a complexidade do WebAuthn, casos extremos e por fornecerem telemetria integrada. Os SDKs também oferecem interfaces mockáveis para testes unitários (cruciais visto que não se pode testar biometria em simuladores).
Recomendação: para implementações nativas, recomendamos o uso dos SDKs da Corbado (iOS Swift Passkey SDK, Android Kotlin Passkey SDK), que lidam com os inúmeros casos extremos descobertos através de implementações em produção e fornecem telemetria e testes adicionais.
Igor Gjorgjioski
Head of Digital Channels & Platform Enablement, VicRoads
We hit 80% mobile passkey activation across 5M+ users without replacing our IDP.
See how VicRoads scaled passkeys to 5M+ users — alongside their existing IDP.
Read the case studyAs System WebViews usam o componente nativo de navegador da plataforma para lidar com a autenticação dentro da sua aplicação. Ao contrário das implementações puramente nativas, as System WebViews apresentam conteúdo web usando o navegador real do sistema (Safari no iOS, Chrome no Android), mantendo cookies partilhados, credenciais guardadas e os indicadores de segurança familiares do navegador.
Quando escolher a System WebView:
Principais vantagens:
Componentes da plataforma:
ASWebAuthenticationSession (recomendado para fluxos de autenticação) ou
SFSafariViewController (navegação geral)Grandes empresas como o Google e o GitHub adotaram esta abordagem para adicionar o início de sessão por chave de acesso às suas aplicações móveis através de sobreposições de WebView em páginas de autenticação web já existentes. Isto funciona bem quando não é imediatamente viável reconstruir totalmente a autenticação nativa.
O iOS fornece dois componentes principais de System WebView para autenticação:
ASWebAuthenticationSession (Recomendado para Autenticação):
SFSafariViewController (Navegação Geral):
| Característica | ASWebAuthenticationSession | SFSafariViewController |
|---|---|---|
| Caso de Uso Principal | Fluxos de autenticação | Navegação web geral |
| OAuth/OIDC | Excelente | Bom |
| Suporte de Passkeys | Sim | Sim |
| Personalização | Limitada | Mínima |
Se a sua aplicação utiliza o início de sessão baseado em OAuth, a
ASWebAuthenticationSession é a escolha recomendada, pois foi desenhada especificamente
para cenários de autenticação e fornece o melhor equilíbrio entre
segurança e experiência do utilizador.
O Chrome Custom Tabs (CCT) fornece uma experiência de autenticação alimentada pelo Chrome dentro da sua aplicação:
Principais características:
Integração OAuth: o Chrome Custom Tabs é o equivalente Android do iOS ASWebAuthenticationSession, fornecendo excelente suporte a OAuth enquanto mantém o acesso às chaves de acesso armazenadas.
Teste passkeys em uma demo ao vivo.
As Embedded WebViews fornecem controlo total sobre a renderização do conteúdo web na sua aplicação, permitindo a manipulação direta de cookies, sessões e navegação sem a barra de URL. No entanto, este controlo implica requisitos técnicos adicionais para ativar a funcionalidade de chave de acesso.
Quando escolher Embedded WebView:
Contexto importante:
Muitas aplicações utilizam uma abordagem híbrida: a System WebView lida com a autenticação OAuth inicial (onde as chaves de acesso funcionam perfeitamente), e depois muda para a Embedded WebView no pós-autenticação para gerir as chaves de acesso nas definições. O desafio surge quando se tenta usar chaves de acesso diretamente dentro de Embedded WebViews.
Requisitos técnicos:
As Embedded WebViews requerem configurações adicionais em comparação com as System WebViews:
Componentes de plataforma:
WKWebViewandroid.webkit.WebViewCompromissos:
Ao implementar chaves de acesso através de WebViews, é crucial compreender a distinção entre System WebViews e Embedded WebViews. As três abordagens descritas acima (Implementação Nativa, System WebView e Embedded WebView) servem, cada uma, casos de uso diferentes.
No iOS, tem várias opções para apresentar conteúdo web na aplicação:
No Android, as principais opções são:
android.webkit.WebView), que
essencialmente é um mini browser que pode ser incorporado nas suas atividades. É
altamente personalizável, mas corre no processo da sua aplicação.Nas próximas secções, entraremos em maior detalhe sobre estes tipos de WebView no iOS e Android, e discutiremos qual se adapta melhor aos fluxos de autenticação com chave de acesso.
Assine nosso Substack de passkeys para receber as últimas novidades.
A plataforma da Apple fornece as três opções de WebView listadas acima. A sua escolha afetará a fluidez da utilização das chaves de acesso na aplicação:
Para testar o comportamento das várias WebViews no iOS, recomendamos a aplicação WebView - WKWebView and UIWebView rendering.
A WKWebView é um componente WebView versátil para iOS. Os programadores podem incorporar uma WKWebView para exibir conteúdo web com um elevado grau de controlo sobre a UI e o comportamento. A WKWebView utiliza o mesmo motor de renderização do Safari, sendo, portanto, muito eficiente e suportando funcionalidades web modernas. Em teoria, a WKWebView consegue gerir o WebAuthn (e assim as chaves de acesso) se configurada corretamente, mas repare que algumas funcionalidades avançadas do browser poderão ser limitadas por motivos de segurança. Um aspeto a ter em atenção é que, por predefinição, a WKWebView não partilha cookies nem dados de keychain com o Mobile Safari. Os utilizadores poderão ter de iniciar a sessão novamente, pois a sua sessão de WebView é isolada da sessão do Safari. Além disso, uma vez que o conteúdo da WKWebView pode ser totalmente personalizado pela aplicação, o utilizador não visualiza uma barra de endereço ou a UI do Safari – o que é excelente para o branding, mas significa que o utilizador tem menos indicações para verificar a legitimidade da página (uma preocupação ao nível do anti-phishing). Algumas aplicações abusaram inclusivamente da WKWebView para injetar scripts ou alterar o conteúdo (por ex., notou-se que o TikTok injetava JS de rastreio através do seu browser in-app), portanto, é necessário utilizar a WKWebView de uma forma segura e que transmita confiança aos utilizadores.
O SFSafariViewController oferece uma experiência Safari in-app. Ao abrir um URL com o SFSafariViewController, é quase como se o abrisse no browser Safari real, com a diferença de que o utilizador permanece na UI da sua aplicação. A vantagem para as chaves de acesso é significativa: por ser essencialmente o Safari, o iCloud Keychain e as chaves de acesso guardadas do utilizador estão acessíveis. Note que os cookies não são partilhados no iOS 11+. Isto significa que, se o utilizador já tiver uma chave de acesso para o seu site, o Safari poderá encontrá-la e até apresentar o preenchimento automático (Conditional UI) para simplificar o login. O SFSafariViewController é menos personalizável (não é possível alterar muito a sua barra de ferramentas), mas lida automaticamente com muitas características de segurança e privacidade. A barra de URL é mostrada, juntamente com o ícone de cadeado para HTTPS, o que dá confiança aos utilizadores de que se encontram no domínio correto. Em geral, o SFSafariViewController é considerado mais seguro do que um WKWebView puro e é mais simples de implementar. O principal compromisso é sacrificar algum controlo sobre o aspeto e comportamento. Para um fluxo de autenticação, isso é habitualmente aceitável. A prioridade aqui é a segurança e facilidade de login, aspetos em que o SFSafariViewController tem excelência ao usar o contexto do Safari.
| WKWebView | SFSafariViewController | |
|---|---|---|
| Experiência de utilizador | - Sensação nativa: Os utilizadores poderão sentir que o conteúdo web é uma peça nativa da aplicação, pois os programadores podem customizar o design e comportamento para igualar o da aplicação. - Autofill: É possível o preenchimento automático com os dados do Safari | - Perfeita: Experiência de utilizador simples usando as definições do Safari do utilizador, assegurando consistência na navegação web entre a app nativa e o browser. |
| Experiência de programador | - Altamente customizável: Muita customização e configuração disponível - Flexível: Várias APIs para interagir com o conteúdo web | - Customização média: Opções de customização limitadas, em especial se comparado à WKWebView, - Simples: Mais fácil de implementar quando comparado com a WKWebView |
| Desempenho | - Lento: Dependendo da implementação e do conteúdo web, o tempo de carregamento pode ser otimizado, contudo poderá ainda ser mais lento comparativamente ao SFSafariViewController devido ao processamento extra de certas interações e funcionalidades. | - Rápido: Por norma, oferece melhor performance, visto que utiliza o motor do Safari, o qual está otimizado de forma a ser rápido e eficiente a fornecer os tempos de carregamento para as páginas web. |
| Confiança e reconhecimento | - Apresentação de URL não exigida: A WKWebView, frequentemente, não apresenta o URL, tornando mais complexo para os utilizadores validarem a página. Tal resulta no potencial das aplicações maliciosas de espelhar o seu comportamento e efetuar phishing a credenciais. | - Experiência Tipo-Browser: A renderização de páginas web recorre ao Safari. Os utilizadores verificam os URL e acedem ao auto-fill do Safari, dando mais confiança face à familiar interface. |
| Isolamento | - Separado: Os cookies e sessões estão isoladas das do Safari; os utilizadores não entrarão automaticamente num login na WKWebView. | - Separado: Os cookies e as sessões isolam-se do Safari; também não ficará com login feito automaticamente no SFSafariViewController. |
| Vulnerabilidades | - Seguro: Intrinsecamente seguro via sandbox na aplicação da Apple, contudo o comportamento e aspeto da segurança depende da implementação da app. Possíveis vulnerabilidades caso se faça uma implementação deficiente. | - Mais Seguro: Beneficia do built-in na segurança do Safari, incluindo defesas anti-phishing e de site com má-fé. É, geralmente, visto como a maneira mais segura para expor páginas web face a uma WKWebView por conta dos parâmetros supracitados, e por familiaridade dos utilizadores com o Safari. |
| Outros | - Funcionalidades indisponíveis: Várias funcionalidades browser (ex., WebAuthn) não estarão na íntegra acessíveis pelas preocupações ligadas com a segurança e pelo facto de a WKWebView circular no contexto da app. - Injeção de JavaScript: Algumas apps, ex., o TikTok injeta JavaScript na WKWebView das suas apps ou cortam aos utilizadores o controlo do programa (ex., o Facebook) - Questões de Privacidade: O feedback da comunidade apresenta questões associadas com a privacidade. | - Sem injeção de JavaScript: Não são executáveis scripts na aplicação. Assim fortalece-se o direito à privacidade bem como as suas seguranças. Não é assim também um meio disponível o uso aos alertas ou submissões, gerando alguns inconvenientes ou choques nas páginas. - Reader Mode: Contém um modo leitura concebido nas limpezas, ideal às sessões sobre matérias, e leituras no geral. |
SFAuthenticationSession / ASWebAuthenticationSession – Estas classes (sendo a última o nome amigável ao Swift, por ser a mais atual) são desenhadas especialmente aos fluxos ligados ao OAuth ou para os OpenID Connect. Ao ter de atestar que uma pessoa num determinado portal web (ou IdP forasteira) autentica bem-sucedidamente, no que diz respeito ao iOS a opção deve assentar nas sessões desta vertente. São de uma aproximação evidente no fundo ao que acontece nos moldes do SFSafariViewController, que correm tendo o browser Safari em funcionamento pela parte mais discreta do sistema bem como vão na mesma linha que a forma utilizada em gerenciar os storages e partilhas com recurso a cookies. Destaque no que concerne esta vertente diz respeito à quebra da não comunicação do sistema; a SFAuthenticationSession pedirá constantemente via mensagem para a autorização ligada à utilização da página web, alertando à necessidade e fazendo uso dos sessões do Safari preexistentes.
O benefício resulta na continuidade SSO fluída – caso seja uma utilizadora ou utilizador com a sua conta ativa via Safari o meio servirá o cookie à pessoa dispensando mais registos. Para as passkeys tudo isso se converte vital de momento que o Safari detém o crédito salvaguardado no iCloud Keychain as possibilidades à aplicação são enormes. À luz destas orientações, da parte da Apple para estas situações relacionadas aos fluxos o conselho incide no emprego ASWebAuthenticationSession. Dentre as vantagens pontifica-se como não acede quer os cookies nem credenciais na sua posse à salvaguarda em especial destas garantias do navegador onde corre além das aptidões aos casos relacionados de SSO. A fraqueza encontra no seio deste tema ser focado unicamente na ótica do desenrolamento ou andamento face os procedimentos exigentes sem os render em todas circunstâncias do contexto web na vossa aplicação. Rematando e de modo síntese ao optar em seguir este processo focado em iOS, o ideal na ótica com inclusões no modelo passkeys aponta em utilizar de imediato ASWebAuthenticationSession quer em prol ou por motivos óbvios de segurança e salvaguardando na melhor maneira de gerir fluxos de SSO à parte destas.
Veja quantas pessoas realmente usam passkeys.
No Android, a decisão sobre o WebView é entre o WebView clássico e os Chrome Custom Tabs:
Para testar o comportamento das várias WebViews no Android, recomendamos a aplicação WebView vs Chrome Custom Tabs.
O Android WebView (android.webkit.WebView) é o componente base à apresentação das vias da internet perante o meio interno à app e nos espaços da vossa aplicação. Enquadra muito das similaridades quando contrapostas da solução na base via WKWebView porquanto atribui o acesso abrangente ao dono para com os destinos associados ao intercepto destas vias onde estão na ordem a apresentação além do funcionamento associado. Processa bem em virtude de laborar à medida associada, tal qual corre na sua app nativa num modelo interno ao processo destas. Implementando-se para o modo passkey a solução leva em sentido estrito ao ato à exibição inicial à parte do seu login do servidor principal para a iniciarem em fase destas formas cerimoniais do sistema destas chaves passkeys WebAuthn. Devem também levar à linha em consideração que na via primária ao se enquadrar como WebView Android o acesso fica bloqueado face ao uso partilhado das palavras passe e cookie ao browser predefinido (no caso aos Google Passwords/ Chrome em questão do utilizador comum) nas contas do serviço a uso num terminal do indivíduo. Isto quer em caso se trate para iniciar na modalidade do browser de origem para o contrário, onde de ambas partes será interdito quer numa modalidade Web ou de igual peso WebView Android os elementos passkeys criadas nas plataformas não se conhecem na íntegra perante ambas no cenário na ausência para outras pontes via JavaScript e webkit da mais inovadora em questão. E isto conduz ao aspeto fulcral a saber como ao ser assim a situação não favorece os usuários as recair num procedimento ao registo à mesma no terminal à via de novo se estes tivessem, entretanto a autenticação em ordem via Chrome no momento na sua página original. Em prol de confiança será menos robusto no visual à WebView convencional dado na lacuna associada não dar exibição SSL e/ou na secção URL no qual exigirá dos indivíduos o maior voto confiança perante à sua aplicação da vertente para não serem lesados a práticas nocivas ligadas no phishing à sua privacidade perante a situação. Com nota para além deste âmbito as proibições das partes Google têm surgidos para a adoção desta frente nas partes ligadas à suas submissões em início sessões face as contas suas com recurso com vista na vulnerabilidade latentes no processo em evidência. À performance aspeto é um processo com a viabilidade associada no que contorna à web no caso se os aspetos num ponto fraco recaia a ser no geral o mais exaustivo nos processamentos comparativos num navegador normal com perdas lentas, à priori quando na leitura em que no global a carga da visualização recaia numa página complexa.
Chrome Custom Tabs (CCT) resultam de um processo com uma componente à maneira via tipo abordagem de contornos híbridos à base do sistema para as resoluções num espaço do dispositivo. Devem-se a ter à modalidade do processamento num ambiente exterior de Chrome associada para o modelo na aba exterior num separador incorporado. Dá opções à escolha como pintar cor no painel, do ícone das aplicações na inserção no ecrã e à customização via componentes à apresentação, da renderização à tarefa que fica ao encargo unicamente ao Google Chrome. O resultado final num ambiente chaves passkeys nas frentes nestas plataformas têm uma enormidade benéficas à utilidade face aos aspetos relacionados em prol as parcerias no processo Chrome, no que resultaria no acessos imediatos das passwords Google e Chrome (via Google Password Manager), da passkeys em uso nas vertentes as CCT na aba. Esta característica de visuais com barra indicando as origens dos endereços garantem um maior laço dos laços a unirem no seu público. De realce à componente na sua base com o uso aos processamentos aquecimentos “warm ups" na secção Chrome permite tempos e resposta ao nível mais reduzido no desenrolar na funcionalidade das carregamentos de exibição da apresentação global nas Custom Tabs da aplicação à performance do seu geral com garantias sólidas e um processamento seguro: sendo de aspeto geral via Chrome da conta e à par do seu Google, este último atua no controlo de proteção aos sessões via Safe Browsings o de não autorização ao se introduzir uma injeção perante o que seja à via de certas ameaças perante os códigos destas no que bloqueia aos abusos face certos comportamentos nocivos perante a execução.
Fica só condicionado as pessoas estarem da sua adesão nestes terminais Android no browser oficial Chrome (da lista com base no sistema). Nalguma parte se no dispositivo faltasse esta ou estarem no seu sistema à desatualizadas poderá representar o seu entraves na execução no âmbito. Na conclusão global nas recomendações as via que se sugere aos moldes Android é nas frentes Chrome Custom Tabs face aos resultados positivos nos moldes de fluidez segurança passkeys em destaque nas integrações e nos ambientes a atuar que de um lado em Android se espelharia noutra realidade ao equivalente para SFSafariViewController/ ASWebAuthSession no iOS a aproveitar os browser primários do sistema nas tarefas à autenticação em causa num sistema à escolha ao sucesso passkey no momento de utilização no local na hora em segurança sem mais nem menos na partilha a essas sessões à qual a sua passkey usufrui neste ambiente seguro de facto.
(A título complementar: as dicotomias WKWebView da Apple vs SFSafariViewController com as suas congéneres via Android ao equivalente em CCT tem pontes paralelas das similitudes associadas nestes espetros nos contextos de partilhas via credenciais com o resultado destas vertentes Web num ganho positivo à experiência e de um melhor na segurança às contrárias na customização mas noutro num ambiente e estado das passkeys num isolado conteúdo das isolamentos de partilhas no âmbito Web à plataforma que seja nos sistemas Web.)
| Funcionalidade | WebView | Chrome Custom Tab |
|---|---|---|
| Experiência de utilizador | - Flexibilidade: Traz variadas escolhas de um leque na interatividade no nível com funcionalidades aos manejos na sua global num conjunto via Web bem nas execuções face à intervenção ao Javascript no acesso a requisições com os menus etc. - Consistência: À custa de vários contextos com dificuldade nos processos nas consistências e das experiências dão dores de cabeça nas garantias associadas nestas. | - Opções do browser: Num panorama partilha nas partes entre as abas sincronizados e outras partes das variadas funcionalidades associadas. - Voltar/Back Button: Ao dar hipóteses de navegação entre interfaces via simples regressar do botão de app nas inserções no momento. - Dependência: Assenta a base ao aplicativo da sua Chrome em que por norma numa falha nalguns do utilizador poderá comprometer no meio desta vertente nas faltas via app noutras. - Reencaminhar ao browser: A um encargo nalguns da via e para funcionalidade recairão à mudança numa via e browser do seu telemóvel na transição perante a UX em global no distúrbio nestas áreas nas perspetivas. - Ecrãs nas Tabs Parciais: Face a este detalhe de uma exibição no limite nas porções na tab no limite visual no seu Chrome Custom Tab, exibindo numa moldura em tela parcial ao conteúdo principal com base numa vista normal nativa - Tela à folha/Lateral: Exibindo em panoramas largos nas telas dos equipamentos e os Chrome nas secções laterais perante as vertentes do resto na sua vista. |
| Experiência de programador | - Elevadamente customizável: As aptidões nas suas áreas com necessidades com várias vertentes de acesso aos variados pormenores de customização na plataforma. - Interatividade: Fornecimento na imensa gama e API na parte à sua conectividades na parte das Web e interações do mesmo no panorama destas. | - Personalizável: O programador altera de cores às suas tarefas das ações dos elementos barras de baixo do fundo ou do movimento ao efeito de transições nos menus aos painéis do meio. - Recorrer nos retornos Callback: Num sistema na capacidade na entrega a ações do callback em exterior com processos das vias de exterior em acessos as ligações e redireções na mesma. - Na sua segurança de componentes de segurança: Faculta ao pacote já final com isenção nas partes com base nas isenção na sua autoridade a conceder na exigência nas partes. |
| Desempenho | - Desempenho medíocre: Pela ausência das opções nas prestações da contraparte ao nível dos serviços nas vias nas concorrência frente os modelos como da Custom Tab da via do Chrome (CCT). | - Pre-warming: Ao iniciar nas fases atrás dos bastidores na via na renderização via o browser o antecipado da URL das suas pré-visualização das ligações das redes face aos modelos da via na internet com ganho aos processamentos reduzindo na mesma aos prazos nas ligações do uso das redes a dar respostas eficazes no modo da plataforma online e suas tempos à vista. - Grau à elevação via prioridade: Com destaque à relevância destas opções de Custom na elevação da forma numa plano à frente ao principal "foreground" a garantir a isenção destas de se encerramento via de prioridades não dar encerramentos ao plano num modelo destas plataformas em modo aberto. |
| Confiança e reconhecimento | - Não demonstra informações no painel das ligações na via URL nem vias das certidões das SSL: Não havendo de um modelo das vertentes explícito nem por predefinições nestes modelos, por norma as pessoas estão num dilema pois desconhecem na ausência se as mesmas à frente da página ou site não é falsa até caso ao programador atuar nas inserções num plano explícito ao dar a inserção de código nos processos à mesma. | - URLs e das SSL com visualizações no processo: Mostram explicitamente aos visuais das URL ou via dos acessos e certificado nas vias da URL para dar certezas às bases com base do que vê. Com a vertente do sistema e das opções reais a executar na plataforma a usar da Chrome na mesma forma nas exibições nas bases no uso. Transmitem certezas. |
| Isolamento | - Corre dentro das bases no nível processos app: Na falta da segurança nalgum aspeto na vertente de vias de malware/ataque poderá pôr esta em processo, bem nas faltas em questão no domínio no modelo, ao se ver refém nesta vertente nas áreas em questão do programa base às mesmas que dão os aspetos globais nestas nas vertentes e de bases ligadas. - Não partilhas via cookies / de sessão das mesma no terminal: Na falta nas ligações com o acesso base da sua terminal face aos navegadores das origens nestas nas vertentes na segurança nas não ligações a exigir na globalização de outro modelo do novo dos utilizadores aos mesmos nestas. | - No interior aos Chrome Process no contexto base dos navegadores de base de terminal de um sistema a nível terminal no processo nos terminais destas originária do contexto das: Nas ligações em processamentos na mesma via das vias, o custom corre neste patamar associando o pacote igual em partes como os updates do modelo do seu browser no modelo do processamento na Custom face a sua vertente ligada aos mesmo. - Num pote as bases em partilha via dos permissões aos mesmos em modelos do jar: Isenta os usos com modelos na vias nos repetidos passos dos novos via início à sessão nos conceder e modelos à parte deste caso em partes da vertente nos modelos nas permissões. - Num meio vias em definições Chrome & ao plano em bases preferenciais das mesma via na plataforma no momento do terminal nas bases: Com os apoios ligados aos meios destas nas definições destas num panorama da Chrome do seu terminal num modelo ao plano. |
| Vulnerabilidades | - Callbacks às capturas: Nos cenários via de problemas à parte na injeções a parte em processo JavaScript poderá ser na vertente numa área num uso de chamadas via na inserções que visam à tentativa as bases na extrações nas base de palavras no seu Facebook. - Esquemas no caso em phishing: Nas vertentes na via as aplicações base e más nestes nestas aspetos na via nestas dão lugar na vias de espelho num ecrã falsificado na tentativa nos phishings nestas vias e noutras base à sua imitações da interface. | - Na defesa com apoios nas plataformas do via proteção Safe da bases em proteções Google: Via as vertentes na vias das navegação Safe via os apoios destas da origens para uma vias destas nas vertentes das garantias à segurança das terminal dos usuários via nos meios e das ameaças nas redes e os problemas de outras base da rede e web sites nestes patamar nas zonas perigosas do contexto web numa linha proteção na plataforma geral no Google de um sistema à base na segurança de redes online no Google em globalidade destas e nas defesas da conta. - Do seu visual na confiança do navegador na barra nas decorações em seguranças na plataforma no terminal no Chrome em Custom Tabs nas proteções contra JavaScript à parte da web app face nas Custom das Tab nas inserção na plataforma nas exibições da vertente nestes patamares no panorama das exibições: Mostrando explicitamente vias garantias e dos URLs ao alvo às informações explícitas nos endereços. Dá bases com garantias no não ao ataque JavaScript nestes modelos num combate via nestas nas Custom no terminal nas inserções em processos. |
| Outros | - Google aplicou de certa maneira as suas proibições vias das acessos no início sessão em serviços no caso em WebView com as suas próprias contas no modelo nos acessos com utilizadores nestes sistemas de via web app nestes cenários via de contas base. |
Independentemente da abordagem de implementação que escolher, certos requisitos técnicos têm de ser cumpridos para ativar a funcionalidade da chave de acesso. Esta secção fornece orientação abrangente sobre a configuração de ficheiros de associação well-known, direitos iOS e configuração da WebView Android.
Nota sobre dispositivos geridos: o comportamento das chaves de acesso muda significativamente em dispositivos geridos onde as políticas de Gestão de Dispositivos Móveis (MDM) controlam o armazenamento de credenciais. Para testar chaves de acesso em dispositivos geridos, consulte Passkeys on Managed iOS & Android Devices.
Fluxos da Implementação nativa e Embedded WebView requerem ficheiros de associação para estabelecer confiança criptográfica entre a sua aplicação e o domínio web. O System WebView (ASWebAuthenticationSession) e o Chrome Custom Tabs não necessitam de associação app-para-site.
O ficheiro AASA estabelece a ligação entre a sua aplicação iOS e o seu domínio web, permitindo que as chaves de acesso funcionem nas duas plataformas.
Localização do ficheiro:
https://seudominio.com/.well-known/apple-app-site-association
Requisitos de configuração:
/.well-known/apple-app-site-association no seu domínioapplication/json.well-knownExemplo do ficheiro AASA:
{ "webcredentials": { "apps": ["TEAMID123.com.example.app"] } }
Caching e testes com o AASA:
A Apple guarda agressivamente ficheiros AASA em cache (até 24-48 horas) utilizando uma CDN, o que pode atrasar os desenvolvimentos e testes. Para passar a cache na fase de desenvolvimento:
?mode=developer para domínio das Associated Domains ao nível do
projeto do Xcode das opções à escolha do domínio e vertente⚠️ Atenção importante: DE FORMA ALGUMA, coloque o uso na vertente de um sistema com
modo finalização da inserção do ?mode=developer à parte as exibições na via produção da
sua plataforma e das apps, visto as vias à produção que não terão leituras nas vias na
Apple de processos à vista do normal funcionarem sem a base do modo e no iOS. Tudo resulta
não reconhecer as suas bases da vertente ao uso da app nativa via ao modo das chave do
passkey num contexto app nas origens das mesmas.
Validações nos testes das opções no ambiente: Em utilização no site da Apple em ambiente Validador da plataforma AASA Validator do serviço, efetue os testes e comprove a validação associada ao funcionamento perante o seu setup em conformidade na plataforma online.
O Android usa Digital Asset Links com vista à validação ao estabelecer e das verificações ao seu domínio entre app nativa nestas vertentes e do domínio Web nestes cenários.
Sítio/Endereço para ficheiro no caso base:
https://seudominio.com/.well-known/assetlinks.json
Lista ao formato a constar:
.well-known/assetlinks.json da origem do domínio online no servidor
local na base.application/jsonO exemplo em modelo base à base na json no caso dos assetlinks:
[ { "relation": [ "delegate_permission/common.handle_all_urls", "delegate_permission/common.get_login_creds" ], "target": { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": [ "AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99" ] } } ]
As aprovações das suas conformidades base nos serviços das Google e ligações à ferramentas do Google: Recorra da via aos Digital Asset Links do lado gerador da via na plataforma das ferramentas da base Google nas ferramentas ligadas ao site no Google das bases da validação na internet nas opções em ferramentas base Digital da Google no site via Generator Digital nas conformidade no fim nos seus ficheiros.
Aplicações iOS dependem nas áreas associadas aos direitos do sistema (entitlements) na funcionalidade via nas inserção nas capacidades de chave acesso e no uso do funcionamento. Variam nas áreas dependendo das inserção das implementações via à app.
Os ficheiros ao que se designam no Xcode para entitlements (com os moldes nas apps via
framework na base no Flutter do estilo do seu em
Runner.entitlements da aplicação nestas ou de uma vertente a ser na
YourApp.entitlements das plataformas iOS na sua originaria na criação original nas vias
normais). Determinam nas plataformas Apple à sua componente via de privilégios de acesso
aos sistemas e opções em acesso nestas da capacidade das funções nos cenários aos níveis
da sistema base e privilégios que este detém na app à autorização do modelo. Configuram,
em especial passkey nos modelos com vias nos Domínio aos níveis Associated Domains de
ligações nestas opções nas plataformas e ao sistema em vias na plataforma de base.
No local do caminho aos processos via a localizar no caso ao uso via Xcode: Encontra a
ser da área habitual do projeto do Xcode no ios/Runner/Runner.entitlements nas áreas do
terminal via do seu percurso da vertente na aplicação.
Nas vertentes das Implementação nativa no contexto da mesma e Embedded WebView exige dos privilégios o de na Associated Domains de ligar o uso app a de web domínio em ambiente de chaves. System WebView da vertente ao uso de vias (ASWebAuthenticationSession) da área no panorama Safari é no caso livre neste pormenor em exigência.
Modo em configuração e setup à volta do Xcode no caso na área do domínio iOS e terminal na plataforma macOS com o acesso via ambiente de base:
webcredentials: e no formato prévio a
usar a inserção de opção do seu texto à via antes do nome ao seu domínio da vertente
app no texto em foco.Um exemplo ao contexto do formato via no contexto nas opções em configurações e texto via a base na app a código em base à sua inserção XML base de formatação via plist de base iOS do terminal e ao ficheiro em causa nestas opções da app iOS:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.developer.associated-domains</key> <array> <string>webcredentials:yourdomain.com</string> <string>webcredentials:subdomain.yourdomain.com</string> </array> </dict> </plist>
| Abordagem | Nas Associated Domains nas Exigências da app | Em Configuração Adicional das opções |
|---|---|---|
| Implementação nativa | Em Sim | A da sua Implementação nas configurações base |
| System WebView | Para Não Necessita | Do modelo web da base da opções na predefinição a uso base e à web default ao seu uso |
| Embedded WebView | Em Sim | Para Necessidade da AndroidX WebKit base no caso 1.12.1+ nas definições ao sistema a configuração base à plataforma de WebView |
Domínios ao Múltiplos a em foco em causa: Num plano à app e opções a app precise em vários do uso na base domínios as vias a usar ROR das originárias em pedidos ROR (Related Origin Requests) e de opções em origens ROR em causa nas partes de uso nas áreas.
Embedded WebView no cenário Android faculta o suporte do WebAuthn em formatos duas com as opções distintas num plano em abordagem de contextos: do formato das atualizadas Android e bases no processo ao formato WebKit no caso do Android (na 5.3.1) ou da JavaScript pontes e nos seus modelos nestes contextos dos pontes no passado com JavaScript em base nestas opções e da 5.3.2. A System WebView em Chrome Custom Tabs é num formato em livre das configurações ao sistema nas aplicações as credenciais nas áreas.
Android na sua opção de modelos da via em base de origens: amostras nas opções do webview no repositório de base oficial Android nos samples WebAuthn nas opções a via na exibição de código do contexto para demonstrar da mesma nas bases em foco para a Android das vertentes para webview nas amostras destas.
Da mais atual WebKit em modernidade na ligação em chaves na via passkeys num funcionamento da parte em processos com um apoio WebAuthn. Neste uso sem a via em precisar do custom e dos pontes no contexto nas via à base código bridge de origem do código à Javascript no contexto de uso nas áreas.
Da oficial na Amostras: Webkit de opções do WebView da app do MainActivity a base webkit da amostra do código MainActivity no código a base e código do site oficial
Requisitos da app nestes moldes e requisitos a respeitar na base da Android:
Da Via de Contexto da Implementação em uso e Código em Android a inserir no código Kotlin da área da app:
import androidx.webkit.WebSettingsCompat import androidx.webkit.WebViewFeature // Validar nas áreas caso a Autenticação via WebAuthn à base Web de funcionalidade for num contexto a suportar if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_AUTHENTICATION)) { // Da Ativação a Autenticação nas vias e Web de suportes na WebAuthn e as chaves de acesso WebSettingsCompat.setWebAuthenticationSupport( webView.settings, WebSettingsCompat.WEB_AUTHENTICATION_SUPPORT_FOR_APP ) // E de via a Ativar as áreas em JavaScript e Javascript nas vias webView.settings.javaScriptEnabled = true }
Os Pontos do Contexto Principal das Opções base:
WebViewFeature.WEB_AUTHENTICATION em via execução no contexto da app nativa.mediation:"conditional" não da parte e Embedded do Android
e não na WebView com o uso.Notas sobre as versões do Android WebKit:
Antes do AndroidX WebKit 1.12.0, o suporte nativo do WebAuthn não existia na Embedded WebView. Esta abordagem mais antiga usa uma ponte Web-para-Nativo para gerir chaves de acesso em dispositivos sem suporte WebAuthn nativo no WebView.
Amostras oficiais:
Quando usar: Ao suportar versões mais antigas do Android ou dispositivos com implementações WebView legadas.
As equipas tinham de:
Para uma implementação detalhada, consulte o guia de integração do Credential Manager WebView do Android. No entanto, recomendamos vivamente o uso da abordagem nativa do WebKit 1.12.1+ para aplicações modernas.
Recomendação: Use o suporte nativo WebAuthn com o AndroidX WebKit 1.12.1+. Se não estiver disponível em tempo de execução, recorra ao Chrome Custom Tabs, que oferece um excelente suporte de chaves de acesso com credenciais partilhadas.
Ao implementar chaves de acesso em aplicações nativas, necessita de estabelecer a confiança entre a sua app e o(s) domínio(s) web. Esta secção cobre como lidar com domínios únicos, múltiplos domínios relacionados (ROR) e como verificar se os seus ficheiros de associação well-known estão corretamente configurados.
Para aplicações que usam um único domínio (por ex. kayak.com), necessita de:
webcredentials:kayak.comAs Related Origins (ROR) são uma
funcionalidade do WebAuthn que permite que um único conjunto de chaves de acesso funcione
em vários domínios relacionados (por ex. kayak.com, kayak.de, kayak.co.uk). As ROR
usam o endpoint /.well-known/webauthn em cada site para definir as
origens relacionadas,
NÃO os ficheiros AASA ou assetlinks.
Pontos principais:
/.well-known/webauthn com a lista de
origens relacionadasExemplo de configuração:
Se a sua app funciona com kayak.com e kayak.de, ambos os domínios têm de:
Antes de entrar em produção, verifique se os seus ficheiros well-known estão devidamente configurados e acessíveis. A Apple e o Google fornecem URLs de teste baseados em CDN para verificar a disponibilidade dos ficheiros:
| Domínio | Verificação do AASA da Apple | Verificação dos Digital Asset Links do Google |
|---|---|---|
| kayak.com | Testar ficheiro AASA Verifique se a CDN da Apple consegue obter o seu ficheiro | Testar assetlinks.json Verifique se o Google consegue aceder aos seus asset links |
| kayak.de | Testar ficheiro AASA Verifique se a CDN da Apple consegue obter o seu ficheiro | Testar assetlinks.json Verifique se o Google consegue aceder aos seus asset links |
Usando estes URLs de teste:
?nocache=1 da Apple força a obtenção de uma versão recente, contornando a
cache da CDNkayak.com ou kayak.de pelo(s) seu(s) próprio(s) domínio(s) nos padrões de
URL acimaProblema com testes: Certifique-se de que todos os domínios têm ficheiros well-known devidamente configurados. Um ficheiro em falta ou mal configurado em qualquer domínio pode quebrar a funcionalidade das chaves de acesso para esse domínio.
Mais informação: Identificador de Relying Party WebAuthn em aplicações nativas
A escolha da abordagem de implementação certa depende da arquitetura de autenticação da sua aplicação, dos requisitos OAuth e da necessidade de controlo da sessão. Use esta árvore de decisão para determinar o melhor caminho a seguir.
O fluxograma seguinte orienta-o na seleção da abordagem de implementação certa com base nos requisitos da sua aplicação:
Referência rápida para cada caminho:
Eis como cada abordagem se comporta ao longo de dimensões fundamentais:
| Abordagem | Criar chaves de acesso | Usar chaves de acesso | Gerir chaves de acesso | Complexidade técnica | Suporte OAuth | Tempo de configuração |
|---|---|---|---|---|---|---|
| Implementação nativa | Alta adoção Biometria perfeita, melhor UX | Instantâneo, silenciosopreferImmediatelyAvailableCredentials permite sobreposição automática no arranque | Controlo nativo total Integração com as definições | Média-Alta APIs específicas da plataforma | Requer implementação de fluxo OAuth separado | Semanas a meses |
| System WebView | Boa adoção Experiência de navegador, familiar | UX de navegador padrão Conditional UI nos campos de entrada, keychain partilhado | Baseado no navegador Gerido no navegador | Baixa Código nativo mínimo | Excelente Concebido para OAuth | Dias a semanas |
| Embedded WebView | Adoção menor Requer configuração | Suporte WebAuthn nativo WebKit 1.12.1+, sem Conditional UI | Controlo limitado Sem integração nativa | Média-Alta Config. WebView + permissões | Requer configuração | 1-2 semanas |
Explicações das dimensões:
Recomendado: System WebView
Se a sua app autentica via OAuth2, OIDC ou fornecedores de início de sessão social (Google, GitHub, Microsoft, etc.), o System WebView é a escolha ideal:
ASWebAuthenticationSession é concebido para fluxos OAuthExemplo: as aplicações de viagens como o kayak.com e o kayak.de usam OAuth para autenticação. O System WebView permite-lhes manter a sua infraestrutura OAuth existente enquanto adicionam suporte para chaves de acesso através das suas páginas de autenticação web.
Recomendado: Abordagem Híbrida
Use o System WebView para a autenticação OAuth inicial, e depois o Embedded WebView para sessões pós-autenticação:
Quando usar: Aplicações que se autenticam via OAuth, mas que depois precisam de exibir conteúdo web autenticado onde a manipulação direta da sessão é necessária.
Recomendado: Implementação Nativa
Está a começar do zero ou tem ecrãs nativos? Escolha a via totalmente nativa:
preferImmediatelyAvailableCredentials para apresentar uma
sobreposição automática de chaves de acesso no arranque da app -
exclusivo das implementações nativas e proporcionando as mais elevadas taxas de
conversãoPara Novas Aplicações: Recomendamos fortemente a construção de um início de sessão nativo desde o primeiro dia. Prepara-o para uma UX ideal e evita futuras migrações de WebView para nativo.
Recomendado: Migração Faseda
O diagrama seguinte mostra o caminho de migração incremental:
Cada fase baseia-se na anterior, permitindo melhorias incrementais sem interromper os utilizadores existentes.
| Requisito | Nativo | System WebView | Embedded WebView |
|---|---|---|---|
| Ficheiros well-known (AASA/assetlinks) | Exigido | Não exigido | Exigido |
| Associated Domains no iOS | Exigido | Não exigido | Exigido |
| Biblioteca WebKit Android | Não aplicável | Não exigido | Exigido (1.12.1+) |
| ID da Relying Party | Corresponder domínio | Corresponder domínio | Corresponder domínio |
Veja a Secção 5 para instruções de configuração detalhadas.
O teste de chaves de acesso em aplicações nativas requer uma abordagem estruturada e em várias camadas. Siga a pirâmide de testes: testes unitários (lógica isolada), testes de integração (cerimónia WebAuthn em simuladores/emuladores) e testes de sistema (ponta a ponta em dispositivos físicos).
Categorias de Teste Essenciais:
Para uma orientação de teste abrangente, veja o nosso guia dedicado: Testar fluxos de chaves de acesso em aplicações nativas iOS e Android.
Considere pedir aos utilizadores que criem chaves de acesso após um início de sessão tradicional bem-sucedido (palavra-passe, OAuth). Esta abordagem de conversão gradual:
Exemplo: Após o início de sessão OAuth através do System WebView, mostre um prompt nativo: "Ativar um início de sessão mais rápido com o Face ID?" Se aceite, crie a chave de acesso através da página web carregada no System WebView.
A decisão sobre como implementar chaves de acesso - através de Implementação nativa, System WebView ou Embedded WebView é uma escolha de design crucial que afeta a segurança, a experiência do utilizador e a complexidade do desenvolvimento. Não há uma resposta única para todas as situações.
Para aplicações baseadas em OAuth: o System WebView (ASWebAuthenticationSession, Chrome Custom Tabs) é o ponto de partida recomendado. Fornece um excelente suporte OAuth, esforço mínimo de implementação e partilha automática de credenciais.
Para aplicações native-first: escolha a via nativa mais cedo do que tarde. O início de
sessão nativo por chave de acesso oferece a UX mais perfeita com capacidades exclusivas
como preferImmediatelyAvailableCredentials, que ativa a
sobreposição automática de chaves de acesso no arranque da app -
algo que as implementações WebView não podem fornecer. Com o iOS e o Android a oferecerem
agora suporte de primeira classe para chaves de acesso, os sucessos no mundo real
demonstram uma elevada adoção. As ferramentas (incluindo SDKs open-source e bibliotecas de
plataforma) amadureceram para tornar a integração nativa alcançável em prazos razoáveis.
Embora se deva ter em conta as políticas de gestão de dispositivos, a sincronização entre
dispositivos e os fornecedores de terceiros, estes desafios podem ser geridos com uma
engenharia e testes cuidadosos. O resultado é um início de sessão na aplicação que encanta
os utilizadores pela sua facilidade e rapidez, melhorando significativamente a segurança.
Para requisitos de Embedded WebView: o Embedded WebView é comummente utilizado em dois cenários do mundo real. Em primeiro lugar, as aplicações baseadas em OAuth utilizam frequentemente o System WebView para o fluxo de início de sessão inicial, mudando depois para o Embedded WebView para renderizar opções de gestão de chaves de acesso em ecrãs de definições onde o controlo da sessão é necessário - embora algumas aplicações simplifiquem isto mantendo o System WebView para ambos os fluxos. Em segundo lugar, aplicações que já incorporavam o seu fluxo de autenticação em janelas WebView antes de adotarem as chaves de acesso mantêm este padrão por consistência. O Embedded WebView com suporte nativo WebAuthn (AndroidX WebKit 1.12.1+) requer configuração e preparação (permissões, direitos, definições de WebView), mas já não necessita de código de ponte JavaScript personalizado. Note que a Conditional UI não é suportada na Embedded WebView. Escolha esta abordagem quando mantiver padrões de autenticação embutidos existentes ou quando precisar de controlo de sessão/cookies para ecrãs pós-autenticação.
Em última análise, as chaves de acesso em aplicações nativas representam um enorme salto em frente, tanto na conveniência para o utilizador como na segurança. Quer sejam implementadas via Native, System WebView ou Embedded WebView, eliminam os riscos de phishing e os encargos da gestão de palavras-passe para os seus utilizadores. Implementações reais como a integração de chaves de acesso na aplicação nativa da VicRoads demonstram que as abordagens native-first oferecem a adoção e satisfação mais elevadas dos utilizadores quando devidamente executadas com funcionalidades como as sobreposições automáticas de chaves de acesso. Ao seguir as melhores práticas para uma autenticação fácil de utilizar e ao escolher a abordagem de implementação que corresponde à arquitetura da sua aplicação - native-first para novas aplicações, System WebView para fluxos OAuth, ou Embedded WebView para padrões embutidos existentes - pode oferecer inícios de sessão biométricos sem palavra-passe que realizam verdadeiramente a visão das chaves de acesso: uma autenticação simples, segura e encantadora para todos.
Se as chaves de acesso não estiverem a funcionar na sua aplicação nativa, verifique estes problemas comuns por abordagem de implementação:
application/json.well-knownhttps://seu-dominio.com (e não app://)webcredentials:seudominio.comASWebAuthenticationSession (recomendado) ou
SFSafariViewController?mode=developer durante o desenvolvimento (remova na produção)WebViewFeature.WEB_AUTHENTICATIONsetWebAuthenticationSupport() chamado com
WEB_AUTHENTICATION_SUPPORT_FOR_APP"NotAllowedError: The request is not allowed by the user agent or the platform in the current context"
setWebAuthenticationSupport()Nenhum aviso de chave de acesso aparece
?mode=developer no iOS para testar,
verificar o tipo de WebViewPara depuração detalhada, veja o nosso artigo sobre IDs da Relying Party em aplicações nativas.
Uma armadilha comum: os ambientes de staging com acesso restrito (IPs permitidos, apenas por VPN) falharão porque as CDNs da Apple e do Google têm de conseguir obter os seus ficheiros de associação.
https://app-site-association.cdn-apple.com/a/v1/o-seu-dominio-de-staging.com?nocache=1https://digitalassetlinks.googleapis.com/v1/statements:list/?source.web.site=https://o-seu-dominio-de-staging.com&relation=delegate_permission/common.handle_all_urlsSubdomínio de staging com rpID de produção:
Se o seu ambiente de staging (por ex., stg.login.example.com) usar o domínio de produção
como rpID (por ex., example.com), a pesquisa do AASA acontece no domínio do rpID,
não no seu subdomínio de staging. Isto significa:
Exemplo (vários ambientes a partilhar um AASA):
{ "webcredentials": { "apps": [ "TEAMID123.com.example.app", "TEAMID123.com.example.app.dev", "TEAMID123.com.example.app.stg", "TEAMID123.com.example.app.pre" ] } }
Recomendação: Use um rpID de staging separado que corresponda ao seu domínio de staging para evitar a sobreposição de credenciais entre os ambientes. Isto requer ficheiros AASA publicamente acessíveis no domínio de staging.
Esclarecimento sobre ?mode=developer:
O parâmetro ?mode=developer nos Associated Domains evita a cache da CDN da Apple mas
não contorna o requisito de acessibilidade. O seu ficheiro AASA continua a ter de
estar acessível pelo dispositivo (não através da CDN da Apple, mas diretamente). Isto
ajuda durante o desenvolvimento ao fazer iterações em alterações no AASA, mas não ajudará
se o seu servidor de staging tiver restrição de IPs.
SDKs Nativos da Corbado:
Documentação da plataforma:
Ferramentas de Validação:
Corbado é a Passkey Intelligence Platform para times de CIAM que rodam autenticação consumer em escala. Mostramos o que logs de IDP e ferramentas genéricas de analytics não enxergam: quais dispositivos, versões de SO, navegadores e gerenciadores de credenciais suportam passkeys, por que os registros não viram logins, onde o fluxo WebAuthn falha e quando uma atualização de SO ou navegador quebra silenciosamente o login — tudo sem substituir Okta, Auth0, Ping, Cognito ou seu IDP interno. Dois produtos: Corbado Observe adiciona observabilidade para passkeys e qualquer outro método de login. Corbado Connect entrega passkeys gerenciados com analytics integrado (junto ao seu IDP). VicRoads roda passkeys para mais de 5M de usuários com Corbado (+80% de ativação de passkey). Fale com um especialista em Passkeys →
A escolha depende da sua arquitetura de autenticação. Se a sua aplicação usar OAuth2 ou OIDC, o System WebView (ASWebAuthenticationSession no iOS ou Chrome Custom Tabs no Android) requer o menor esforço de implementação e nenhuma configuração de ficheiro de associação. Para novas aplicações native-first, a Implementação Nativa oferece uma UX superior, enquanto o Embedded WebView é adequado para aplicações que já incorporam a autenticação num WebView e precisam de controlo de sessão ou de cookies após o início de sessão.
O SFSafariViewController tira partido do motor do Safari, apresenta a barra de URL com os indicadores SSL e fornece proteção contra phishing, tornando-o mais fiável para fluxos de autenticação. O WKWebView oferece uma maior personalização da IU mas possui um armazém de cookies isolado do Safari, requer direitos de Associated Domains e um ficheiro AASA para ativar as chaves de acesso e não apresenta a barra de URL, reduzindo os sinais de confiança do utilizador.
Os Chrome Custom Tabs partilham cookies e credenciais guardadas com o navegador Chrome do utilizador, o que significa que as chaves de acesso guardadas no Google Password Manager estão acessíveis durante a autenticação. O Android WebView padrão possui um armazém de cookies isolado, não mostra o URL nem os indicadores SSL e o Google proibiu-o explicitamente para inícios de sessão com contas Google devido a riscos de phishing.
Se um utilizador tiver um gestor de credenciais de terceiros, como o 1Password, definido como o seu fornecedor ativo, este intercetará frequentemente a criação e o armazenamento das chaves de acesso, assumindo prioridade sobre o gestor de credenciais nativo da plataforma (iCloud Keychain ou Google Password Manager). Isto significa que as chaves de acesso podem ser armazenadas na aplicação de terceiros em vez de no keychain da plataforma, afetando o comportamento da sincronização entre dispositivos e a gestão de chaves de acesso.
Quando as políticas MDM desativam a sincronização de credenciais, as chaves de acesso ficam associadas ao dispositivo e não podem ser transferidas para um dispositivo de substituição, ao contrário do que acontece em cenários de consumo típicos. As aplicações direcionadas a ambientes empresariais devem prever mecanismos de autenticação de recurso, tais como o início de sessão através de palavra-passe ou ligação mágica (magic link), para lidar com os casos em que um utilizador recebe um novo dispositivo gerido.
Veja como a Corbado se encaixa na sua implementação de passkeys e no stack de autenticação atual.
Explorar a Console
Artigos relacionados
Índice