Come autenticare l’applicazione 4D unita (macOS 12 e Xcode 13)

Tradotto automaticamente da Deepl

Nota: aggiornamento per macOS 12/Monterey e Xcode 13. Per Xcode 12 e precedenti, vedere questo post del blog.

Con Monterey (macOS 12), si consiglia vivamente di autenticare le applicazioni distribuite su una rete pubblica. Un numero significativo di sviluppatori trasferisce le proprie applicazioni utilizzando un dispositivo di archiviazione collegato o tramite la condivisione di file; la notarizzazione non è necessaria in questi casi in cui l’utente si fida già dello sviluppatore. La notarizzazione ha lo scopo di assicurare agli utenti che l’applicazione non è dannosa ed è necessaria solo per le applicazioni scaricate da un sito web.

Utilizzando la nostra funzione di firma integrata durante la creazione delle applicazioni con 4D v18, l’applicazione è pronta per essere autenticata. Questo processo si svolge al di fuori di 4D. Si tratta di aggiungere una firma elettronica alla domanda e di inviare la domanda firmata a un servizio di controllo automatico. Ecco tutto quello che c’è da sapere:

PREREQUISITI

XCODE

La notarizzazione richiede Xcode 13 o successivo e macOS 12 o successivo.

Se sul vostro Mac è installata più di una versione di Xcode, potete usare l’utility Xcode-select per scegliere la versione appropriata:

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

Anche se di solito non utilizzate direttamente Xcode, dovreste avviarlo almeno una volta. Se vi avvisa di scaricare gli “Strumenti per sviluppatori”, accettate.

Se chiede di confermare le condizioni di licenza, accettarle.

Non è una cattiva idea ripetere questo passaggio dopo aver installato una versione più recente di Xcode. Di solito è necessario accettare le modifiche alla licenza, altrimenti l’autenticazione fallirà.

In alcuni casi, è necessario accedere a https://appleid.apple.com/account/home per accettare le nuove condizioni dell’Apple Store; in caso contrario, l’autenticazione potrebbe fallire (anche se non si desidera pubblicare sull’App Store).

AUTENTICAZIONE A DUE FATTORI

È inoltre necessario aver attivato l’autenticazione a due fattori sul proprio ID Apple.

Se non siete sicuri di aver impostato l’autenticazione a due fattori, accedete alla pagina dell’account dell’ID Apple, cercate l’opzione Autenticazione a due fattori nella sezione Sicurezza e verificate se la funzione è attiva o meno.

Panoramica del processo

Per l’autenticazione notarile è necessaria un’impostazione. Questa operazione deve essere eseguita una sola volta. Poi, per ogni build, è necessario zippare, caricare, attendere i risultati, timbrare e zippare di nuovo. Questo vale per ogni applicazione (client, server, utente singolo, componente) e per ogni build.

Questo post del blog descrive prima ogni fase in dettaglio per aiutare a capire il processo e infine spiega come utilizzare un metodo 4D per automatizzare completamente il lavoro.

Configurazione per una sola volta

Per l’autenticazione sono necessari i seguenti elementi:

  • Il vostro account ID Apple, di solito il vostro indirizzo e-mail
  • Il vostro team-id aziendale Apple. Vedere sotto “Ottenere i team-id” come recuperarlo.
  • Per una password specifica dell’app, vedere di seguito come recuperarla

Con questi dati, possiamo registrare la password nel portachiavi. Questo ci permetterà di autenticare tramite la riga di comando (o automaticamente da 4D) senza fornire la password in chiaro.

Generare una password specifica per l’applicazione

  1. Accedere ad apple.com.
  2. Nella sezione Accesso e sicurezza, fare clic su Password specifiche per le app.
  3. Fare clic su Genera una password specifica per l’app o fare clic su “+”, quindi seguire i passaggi visualizzati sullo schermo.
  4. Si consiglia di chiamare la nuova password “notarytool”.
  5. Copiate il codice visualizzato.

Ottenere i team-id

Dovreste aver già richiesto e registrato i certificati Apple per il codesign della vostra applicazione. Di solito ce ne sono due (quattro includendo iOS) quando lo si fa. Uno inizia con Apple Development: il vostro nome (user-id), l’altro con Developer ID Application: nome della società (team-id).

Avviate il portachiavi Apple, selezionate i certificati e verificate se vedete Developer ID Application: company name. In caso affermativo, il numero tra parentesi () è il vostro id.

In caso contrario, eseguite quanto segue nel Terminale:

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

sostituite AC_USERNAME con il nome utente del vostro account Apple, il vostro indirizzo e-mail e inserite il codice/2FA copiato in precedenza.

Il terminale risponderà con il vostro team-id.

Maggiori dettagli qui.

Memorizzare le credenziali

Nel Terminale, eseguite quanto segue:

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

Mantenete le virgolette (sostituite solo il contenuto), ma non utilizzate i segni <>, ma solo l’id o la password.

Creare / zippare / autenticare / timbrare

Ora, dopo il processo di preinstallazione (una sola volta), è il momento di fare il vero lavoro di compilazione.

Utilizzate il comando o la finestra di dialogo BUILD APPLICATION e create il vostro componente o la vostra applicazione. Utilizzare la funzione di certificazione per firmare automaticamente l’applicazione creata. Se la compilazione fallisce a causa di un errore di firma, occorre prima risolverlo. La certificazione fallirà per le applicazioni non firmate.

Se il componente include eseguibili nella cartella delle risorse o l’applicazione contiene componenti o plugin, questi devono essere validi e firmati in anticipo.

Zip

Una volta terminata la costruzione, il passo successivo è quello di zippare l’applicazione:

Nel Terminale, inserire quanto segue:

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

Il modo più semplice per inserire i percorsi corretti è copiarli e incollarli nel Terminale:

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

Nota: c’è uno spazio dopo keepParent e il segno di virgolette singole.

Ora trascinate l’applicazione o il componente nel Terminale e aggiungete un altro carattere di virgolette per ottenere qualcosa di simile:

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

Aggiungere uno spazio, un carattere di virgolette, trascinare e rilasciare la cartella di destinazione, quindi digitare il nome dello zip richiesto, seguito da uno spazio.

La riga finale dovrebbe assomigliare a questa:

/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"

Premere Invio per eseguire il comando e ottenere lo zip.

Importante: non eseguire questa operazione con altri strumenti di zip, incluso il Finder. Per far funzionare l’autenticazione, è necessario utilizzare il comando ditto.

Carica

Nel Terminale, digitate il seguente comando (attenzione: potete trascinare e rilasciare il percorso del file per facilitare l’operazione):

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

La risposta che si ottiene è la seguente:

Esecuzione dei controlli preliminari per FileTransfer.zip e avvio della connessione al servizio notarile Apple…

ID di invio ricevuto

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

File caricato con successo

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

percorso: /Users/thomas/Documents/4D/Komponenten/FileTransfer_Curl_Build/Components/FileTransfer.zip

In attesa del completamento dell’elaborazione.

Stato attuale: Accettato…………..

Elaborazione completata

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

stato: Accettato

Se lo stato è “Invalido”, si può chiedere il motivo digitando:

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

Il numero dietro il log è l’id della risposta inviata. L’ultimo nome, developer_log.json, è il nome o il percorso di un file di risultati sul disco, scelto a piacere.

Risponde con:

Scaricato con successo il log dell’invio

id: fb4a2e8f-e2fe-4689-b38f-f6a840abfeb6

posizione: /Users/thomas/developer_log.json

Verificare il motivo del fallimento:

cat /Users/thomas/developer_log.json

Maggiori informazioni qui.

Automatizzare il processo

Questo lavoro deve essere ripetuto per ogni build; ha senso automatizzarlo. Giusto? Ecco tutto ciò che serve per farlo:

Un altro caso d’uso è la creazione di componenti. I componenti compilati per Silicon Mac devono essere notarizzati, il che rende scomoda la pubblicazione di componenti tramite Github.

Il componente: https://github.com/ThomasMaul/FileTransfer_Class include un metodo “_buildComponent”, che compila, costruisce, firma, autentica, spilla e zippa il componente. Tutto questo è automatico al momento dell’esecuzione.

L’ultimo passo è caricare lo zip come “Release” su GitHub.

Spero che questo suggerimento vi aiuti a notarizzare la vostra prossima applicazione. Non esitate a contattarci sul forum 4D se avete bisogno di ulteriore assistenza.

Thomas Maul
• VP of Strategy, 4D Product Line • When 4D's German subsidiary was created in 1988, Thomas joined the company as a Technical Director, helping to build the 4D developer community in both Germany and Austria. After many years supporting customers with technical problems and being increasingly involved in sales and management issues, he was promoted to Managing Director for 4D Germany in 1999. As a member of the executive board since 2005, he became part of worldwide strategy of the company, leading to his current position as Vice President of Strategy, 4D Product Line, responsible for defining and executing the overall strategy for the 4D product line in relation to the Program, R&D, Sales and Marketing teams.