In questo post esporrò come implementare la funzionalità di autenticazione di tipo server-flow usando come identity provider nientemeno che Facebook.
Occorre dire che se si vuole usare un IdP tra quelli supportati da Azure il processo di configurazione è praticamente uguale per tutti.
> Accedere alla console developer dell’IdP scelto
> Creare una nuova App e abilitare l’utilizzo dell’autenticazione Oauth
> Configurare la parte impostando l’URL del redirect del mobile app service di Azure e quindi prelevare gli identificativi proposti (App Id e App Secret) e che saranno usati da Azure per verificare la correttezza dei dati ricevuti dall’IdP.
> Accedere al portale Azure Impostare i dati sopra ottenuti dall’IdP nel Mobile App service.
Proteggere i controller del backend da accessi non autenticati (attributo [Authorize])
Sembra un bel casino, ma vedrete che è una passeggiata di salute !
Rimarco nuovamente che qui useremo Facebook come identity provider, ma il processo è assolutamente analogo per gli altri IdP supportati in Azure.
Per accedere al portale developer di facebook usare il link in llinkografia, e quindi selezionare nuova app "Add New App".
Dopo aver completato il processo occorre aggiungere la funzionalità di facebook login di tipo web (Add a Product -> Facebook Login -> Web)
Per completare il processo verrà richiesto l'URL (Site URL), che dovrè essere messo uguale all'URL dell'endpoint dei servizi, nel nostro caso quelli di Azure, quindi per per esempio https://focac-book-infpress.azurewebsites.net
Una volta completato il processo occorrerà inserire altri dati accedendo a Facebook Login -> Settings.
In questa parte ecco i parametri principali da gestire.
Client OAuth Login: YES
Web OAuth Login: YES
Enforce HTTPS: YES
Force Web OAuth Reauthentication: NO
Embedded Browser OAuth Login: NO
Use Strict Mode for Redirect URIs: YES (tanto è una voce immodificabile)
Valid OAuth Redirect URIs: <Vedi dopo>
Deauthorize Callback URL: <Vuoto>
Data Deletion Request URL: <Vuoto>
Redirect URI to Check: <Vuoto>
Per il campo Valid Oauth Redirect URIs occorre mettere il redirect del servizio Azure che sarà usato dall'IdP per comunicare l'avvenuta autenticazione comprensiva del token (step 3 processo di autenticazione server-flow - vedere post precedente). Tale URL è il seguente.
<URL servizio Azure>/.auth/login/<nome IdP>/callback
Quindi nel nostro caso https://focac-book-infpress.azurewebsites.net/.auth/login/facebook/callback
Oss.: Va da sè che se per caso si fosse usato com IdP google, questo URL sarabbe stato https://focac-book-infpress.azurewebsites.net/.auth/login/google/callback
Il processo di configurazione è terminato, ma occorre ancora alcuni dati per poter configurare il tutto correttamente nel portale Azure: App ID e App Secret.
Questi dati possono essere recuperati nella maschera Settings -> Basic.
A questo punto è necessario guadagnare l'accesso al portale Azure, selezionando il servizio Mobile backend che stiamo studiando.
Qui è necessario abilitare l'autenticazione (voce Authentication / Authorization) e il token store (Advanced Settings -> Token Store: ON).
Occorre anche scegliere l'IdP prescelto (Authentication Providers -> Facebook) nonchè inserire App ID e App Secret prelevato dal portale developer di facebook.
Prima di salvare occorre aggiungere in Allowed External Redirect URLs il valore apnm://easyauth.callback. E' un URL strano di cui parleremo nel prossimo post.
E' possibile testare se i dati introdotti sono corretti mimando parzialmente l'autenticazione che eseguirà la nostra app: basterà da un browser qualsiasi accedere a link di accesso all'autenticazione del servizio azure.
<URL servizio Azure>/.auth/login/<nome IdP>/callback
Quindi nel nostro caso https://focac-book-infpress.azurewebsites.net/.auth/login/facebook/callback
Verremmo redirezionati alla pagina di login di facebbok e qui, una volta inserite le corrette credenziali, si verrà nuovamente rediretti alla pagina del servizio Azure di conferma autenticazione.
Gli errori cui si può incorrerere in questa fase possono essere riconducibili a due tipologie: disattenzione o fancazzismo.
Infatti se si inseriscono nel portale Azure in Authentication / Authorization dei valori App ID e App Secret sbagliati l'autenticazione fallirà miseramente -> Disattenzione
Se accedendo alla pagina di login di Azure si verrà redirezionati automaticamente alla pagina di conferma autenticazione sempre di Azure senza, però, alcuna richiesta di login/password da parte di Facebook, vuol dire che da quello stesso browser ci si è già autenticati e si perde gran tempo in questo social -> Fancazzismo
Nel prossimo post analizzeremo il codice implementativo della app e del backend.
Linkografia