Como autenticar a sua aplicação 4D fundida (macOS 12 & Xcode 13)

Tradução automática de Deepl

Nota: Actualização para macOS 12/Monterey e Xcode 13. Para Xcode 12 e mais antigo, ver este post no blogue.

Com Monterey (macOS 12), é altamente recomendável que faça o reconhecimento notarial das candidaturas distribuídas por uma rede pública. Um número significativo de programadores transfere as suas aplicações utilizando um dispositivo de armazenamento ligado ou através de partilha de ficheiros; não é necessário o registo notarial nestes casos em que o utilizador já confia no programador. A notarização visa assegurar aos utilizadores que a aplicação não é maliciosa e só é necessária para aplicações descarregadas a partir de um website.

Utilizando a nossa funcionalidade de assinatura incorporada ao construir as suas aplicações com 4D v18, a sua aplicação está pronta para ser notarializada. Este processo é conduzido fora do 4D. Implica acrescentar uma assinatura electrónica à sua candidatura e submeter a sua candidatura assinada a um serviço de inspecção automatizado. Aqui está tudo o que precisa de saber:

PREREQUISITES

XCODE

A notarização requer o Xcode 13 ou posterior e macOS 12 ou posterior.

Se tiver mais de uma versão do Xcode instalada no seu Mac, pode usar o utilitário Xcode-select para escolher a versão apropriada:

sudo xcode-select -s /path/to/Xcode13.app

Mesmo quando normalmente não usa Xcode directamente, deve lançá-lo pelo menos uma vez. Se alerta sobre “Developer Tools” para descarregar, aceite-o.

Se pedir para confirmar as condições da licença, aceite-as.

Não é má ideia repetir este passo depois de instalar uma versão mais recente do Xcode. Normalmente, é necessário aceitar alterações de licença; caso contrário, a autenticação falhará.

Em alguns casos, é necessário fazer login em https://appleid.apple.com/account/home para aceitar novas condições da Apple Store; caso contrário, a autenticação poderá falhar (mesmo que não queira publicar na App Store).

AUTENTICAÇÃO DE DOIS FACTORES

Precisará também de ter activada a autenticação de dois factores no seu ID da Apple.

Se não tiver a certeza, terá activado a autenticação de dois factores, inicie sessão na página da sua conta Apple ID, procure a opção de autenticação de dois factores na secção Segurança e veja se a funcionalidade está ligada ou desligada.

Visão geral do processo

É necessária uma configuração para a autenticação. Isto só tem de ser feito uma vez. Depois, para cada construção, é necessário zipar, carregar, esperar por resultados, carimbar, e zipar novamente. E isto aplica-se a cada aplicação (Cliente, Servidor, Único Utilizador, componente) e a cada construção.

Este post no blog descreve primeiro cada passo em detalhe para ajudar a compreender o processo e finalmente explica como utilizar um método 4D para automatizar completamente o trabalho.

Configuração de Tempo Único

Necessitará do seguinte para a autenticação:

  • A sua conta de ID da Apple, normalmente o seu e-mail
  • A equipa da sua empresa Apple-id. Veja abaixo “Obter team-id” como recuperá-lo
  • Para uma palavra-passe específica do aplicativo, ver abaixo como recuperá-la

Com estes dados, podemos registar a palavra-chave no porta-chaves. Isto permitir-nos-á autenticar utilizando a linha de comando (ou automaticamente a partir de 4D) sem fornecer a palavra-passe em texto claro.

Gerar palavra-passe específica do aplicativo

  1. Inicie sessão em apple.com.
  2. Na secção de Iniciar Sessão e Segurança, clicar em App-Specific Passwords.
  3. Clique em Gerar uma palavra-passe específica da aplicação ou clique em “+,” e depois siga os passos no seu ecrã.
  4. Pode querer nomear a nova palavra-passe “notarytool”.
  5. Copie o código exibido.

Obter ajudas de equipa

Já deve ter pedido e registado certificados da Apple para assinar o seu pedido. Há normalmente dois deles (quatro incluindo o iOS) quando o faz. Um começa com Apple Development: o seu nome(user-id), o outro com Developer ID Application: nome da empresa(team-id).

Inicie o chaveiro Apple, seleccione certificados, e verifique se vê a aplicação Developer ID Application: nome da empresa. Em caso afirmativo, o número entre parênteses () é o seu ID.

Se não, execute o seguinte no Terminal:

xcrun altool --list-providers -u "AC_USERNAME" -p secret_2FA_password

substitua AC_USERNAME pelo nome de utilizador da sua Conta Apple, o seu endereço de correio electrónico, e introduza o código/2FA password copiado de cima.

O Terminal responderá com o seu ID de equipa.

Mais detalhes aqui.

Credenciais da loja

No Terminal, execute o seguinte:

xcrun notarytool store-credentials "notarytool" --apple-id "AC_USERNAME" --team-id <WWDRTeamID> --password <secret_2FA_password>

Mantenha as aspas (apenas substitua o conteúdo), mas não utilize os sinais <>, apenas o id ou palavra-passe.

Construir / Fechar / Notarizar / Carimbar

Agora, após o (único) processo de pré-instalação, é tempo de fazer o verdadeiro trabalho de construção.

Utilize o comando ou diálogo BUILD APPLICATION e construa o seu componente ou aplicação. Utilize a funcionalidade de certificação para assinar automaticamente a aplicação criada. Se a construção falhar devido a um erro de assinatura, terá de corrigir isso primeiro. A notarização falhará para aplicações não assinadas.

Se o componente incluir executáveis na pasta de recursos ou se a aplicação contiver componentes ou plugins, estes têm de ser válidos, previamente assinados.

Zip

Quando o edifício estiver terminado, o passo seguinte é fechar a aplicação:

No Terminal, introduza o seguinte:

/usr/bin/ditto -c -k --keepParent "$APP_PATH" "$ZIP_PATH"

A maneira mais fácil de introduzir os caminhos correctos é copiá-los e colá-los no Terminal:

/usr/bin/ditto -c -k --keepParent "

Nota: Existe um espaço depois de guardarParente e o único sinal de aspas

Agora arrastar e largar a aplicação ou componente para o Terminal e adicionar outro carácter de citação para obter algo como por exemplo:

/usr/bin/ditto -c -k --keepParent "/Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.4dbase"

Adicionar um espaço, citar um caractere, arrastar e largar a pasta de destino, depois escrever o nome do zip solicitado, seguido de um espaço.

A linha final deve ter este aspecto:

/usr/bin/ditto -c -k --keepParent "/Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.4dbase" "/Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.zip"

Prima Enter para executar o comando e obter o fecho de correr.

Importante: não o faça com outras ferramentas de fecho de correr, incluindo o Finder. Para que a autenticação funcione, é necessário utilizar o comando ditto.

Carregue em

No Terminal, introduza o seguinte (lembrete: pode arrastar e largar o caminho do ficheiro para o facilitar):

xcrun notarytool submit /Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.zip --keychain-profile notarytool --wait

A resposta que obtém é a seguinte:

Realização de verificações prévias à submissão do FileTransfer.zip e início da ligação ao serviço notarial Apple…

ID de submissão recebida

id: 2071ae83-6660-4d84-afaf-97ea34e945c5

Ficheiro carregado com sucesso

id: 2071ae83-6660-4d84-afaf-97ea34e945c5

caminho: /Usuários/Tomas/Documentos/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.zip

À espera de processamento para concluir.

Estado actual: Aceite…………..

Processamento completo

id: 2071ae83-6660-4d84-afaf-97ea34e945c5

estatuto: Aceite:

Se o estatuto for “Inválido”, pode perguntar o motivo, dactilografando:

xcrun notarytool log fb4a2e8f-e2fe-4689-b38f-f6a840abfeb6 --keychain-profile "notarytool" developer_log.json

O número por detrás do registo é a identificação da resposta apresentada. O apelido, developer_log.json, é o nome ou caminho para um ficheiro de resultado no seu disco, escolhido como quiser.

Responde com:

Registo de submissão descarregado com sucesso

id: fb4a2e8f-e2fe-4689-b38f-f6a840abfeb6

localização: /Users/thomas/developer_log.json

Verificar a razão do fracasso com:

cat /Users/thomas/developer_log.json

Mais informações aqui.

Automatizar o processo

Este trabalho precisa de ser repetido para cada construção; faz sentido automatizá-lo. Não é verdade? Aqui está tudo o que é necessário para o fazer:

Outro caso de utilização é a construção de componentes. Os componentes compilados para Silicon Macs devem ser autenticados, tornando os componentes de publicação via Github desconfortáveis.

O componente: https://github.com/ThomasMaul/FileTransfer_Class inclui um método “_buildComponent”, que compila, constrói, assina, regista, agrafa, e fecha o componente. Tudo isto é automático após a execução.

O último passo é carregar o zip como “Lançamentos” para o GitHub.

Espero que esta dica o ajude a autenticar a sua próxima aplicação. Não hesite em contactar-nos no fórum 4D se precisar de mais assistência.

Thomas Maul
• VP de Estratégia, Linha de produtos 4D - Quando a filial Alemanha de 4D foi criada em 1988, Thomas entrou para a empresa como Diretor Técnico, ajudando a criar a comunidade de desenvolvedores 4D tanto na Alemanha quanto na Áustria. Depois de muitos anos apoiando aos clientes com problemas técnicos e estando cada vez mais envolvido em questões de vendas e a gestão, foi promovido a Diretor Geral de 4D Alemanha em 1999. Como membro da junta executiva desde 2005, passou a formar parte da estratégia mundial da empresa, o que o levou a seu cargo atual de Vice-presidente de Estratégia, Linha de Produtos 4D, responsável de definir e executar a estratégia global para a linha de Produtos 4D em relação às equipes de Programa, I+D, Vendas e Marketing.