Guida al "Sign In with Apple"

pt.1

Netfarm

"Sign In with Apple" la nostra guida su come
implementarlo correttamente.


Molto spesso all'interno delle App viene chiesto di fare il login con il proprio account social Facebook o Google.
Dalla casa Apple con iOS 13 c'è una nuova opzione (obbligatorio per tutte le app Apple) chiamata appunto "Sign in with Apple"

fonte img https://portswigger.net/daily-swig/apple-launches-privacy-focused-login-tech-to-throw-web-trackers-off-users-scent


In questa guida andremo a vedere le diverse procedure necessarie per implementare correttamente Apple Sing-In nella tua App da sviluppare.

Requisiti

Prima di iniziare cosa non deve mancare:

1. È necessario avere già un account nell'Apple Developer Portal ed aver registrato il bundle della propria app su 
https://appstoreconnect.apple.com

La nuova API - Come funziona

Apple ha adottato gli standard esistenti OAuth 2.0 e OpenID Connect da utilizzare come base per la loro nuova API.
Ciò significa che se hai familiarità con queste tecnologie, non dovresti avere problemi a utilizzare il login con Apple.

Vediamo ora come creare un applicazione in grado di sfruttare la nuova API di Apple per accedere agli utenti.

La parte più difficile di questo intero processo è registrare un'applicazione nell'Apple Developer Portal. 
In genere, i provider OAuth hanno un processo relativamente semplice per registrare una nuova applicazione che fornirà un ID client e un Secret. 

Ma l'API di Apple è legata all'intero ecosistema iOS ed è un po' più complicato. Hanno anche scelto di utilizzare un metodo di autenticazione client con chiave pubblica / privata anziché un client secret tradizionale.

Per prima cosa:

Crea l'App ID

1. Accedi all'Apple Developer Portale fai clic su Certificati, Identificatori e Profili


2. Crea l'App ID Dalla barra laterale, scegli Identificatori, quindi fai clic sul "più" di colore blu poi seleziona App ID

 



Nella schermata successiva scegli la descrizione e un ID bundle per l'ID app. La descrizione non è troppo importante, ma digita qualcosa di descrittivo. L'ID bundle è generalmente creato in stile DNS inverso (it.example.app)


Scorri l'elenco delle funzionalità e seleziona login con Apple. Vai avanti e conferma questo passaggio.

Crea il Service ID

Dalla barra laterale, scegli sempre Identificatori, quindi fai clic sul "+" di colore blu, poi seleziona Service ID.



Nel passaggio successivo, definirai il nome dell'app che l'utente vedrà durante il flusso di accesso, oltre a definire l'identificatore che diventa OAuth client_id. Assicurati di selezionare anche la casella di controllo login Apple.

Dovrai anche fare clic sul pulsante "Configura" accanto ad login con Apple in questo passaggio.
Qui definirai il dominio su cui è in esecuzione la tua app, oltre a definire gli URL di reindirizzamento utilizzati durante il flusso OAuth.



Configurazione dell'autenticazione Web

Inserisci l'URL di reindirizzamento
(example-app.com/redirect). Assicurati che l'ID App associato sia scelto come ID App principale. (Se questo è il primo ID app che hai creato che utilizza login con Apple, probabilmente sarà già selezionato.)

Genera la chiave

Anziché utilizzare semplici stringhe come secret del client OAuth, Apple ha deciso di utilizzare una coppia di chiavi pubblica/  privata, il cui il secret è in realtà un JWT firmato.

Il passaggio successivo prevede la registrazione di una nuova chiave privata con Apple.
Torna alla schermata principale Certificati, Identificatori e Profili, scegli Chiavi dalla navigazione laterale.



Registra una nuova chiave e assegnagli un nome poi seleziona la casella di login con Apple




Successivamente, clic sul pulsante Configura e selezionare l'ID app principale creato in precedenza.
Apple genererà una nuova chiave privata per te e ti consentirà di scaricarla una volta. Assicurati di salvare questo file, perchè non potrai recuperarlo più tardi!

Crea la chiave segreta

Noi abbiamo usato PyJWT per generare la secret key.

pip install pyjwt
import jwt

headers = {
   'kid': settings.SOCIAL_AUTH_APPLE_KEY_ID
}

payload = {
   'iss': settings.SOCIAL_AUTH_APPLE_TEAM_ID,
   'iat': timezone.now(),
   'exp': timezone.now() + timedelta(days=180),
   'aud''https://appleid.apple.com',
   'sub': settings.CLIENT_ID,
}

client_secret = jwt.encode(
   payload, 
   settings.SOCIAL_AUTH_APPLE_PRIVATE_KEY, 
   algorithm='ES256', 
   headers=headers
).decode("utf-8")

..... Adesso si passa al Backend!

A questo punto hai finito tutti i passaggi (o quasi!) da fare all'interno dell'ecosistema Apple. Nella prossima parte di questa guida andremo a vedere come usare le chiavi che hai raccolto e successivamente come implementare il login all'interno della tua App!



Fonte img. https://www.macitynet.it/apple-rivoluziona-il-login-arriva-sign-in-with-apple/


Inizia a scrivere qui...