Domande frequenti su MSAL Android

Problemi relativi all'URI di reindirizzamento

MSAL è configurato per l'uso dell'autenticazione negoziata per impostazione predefinita. Per poter funzionare, è necessario costruire un URI di reindirizzamento usando le chiavi di firma associate all'applicazione. L'URI di reindirizzamento deve quindi essere incluso sia nel file di configurazione dell'applicazione che nel manifesto Android. Sfortunatamente è necessaria una codifica diversa per ognuna di esse. Di seguito viene illustrata una rapida procedura dettagliata:

  1. La prima cosa da fare è individuare le chiavi di firma per l'applicazione. In genere le chiavi di debug si trovano nella home cartella in una cartella nascosta denominata ".android" in un archivio chiavi Java denominato debug.keystore. Il portale di Azure offre comandi utili per generare la firma dell'applicazione come indicato di seguito:
  • Macos:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
  • Windows:
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

AVVISO: il reindirizzamento tramite pipe dell'input/output dei comandi è comodo; tuttavia può nascondere gli errori. Se il file dell'archivio chiavi non viene trovato, ad esempio, il messaggio di errore verrà inviato tramite pipe a openssl e il comando completo restituirà comunque un risultato simile a quello previsto. In caso di dubbi, eseguire il primo comando separatamente per assicurarsi che funzioni.

AVVISO: verrà chiesto di specificare la password per l'archivio chiavi. La password dell'archivio chiavi di debug è semplicemente "android". Se non è stata richiesta una password, è possibile che sia necessario eseguire separatamente le parti del comando precedente per assicurarsi che il file dell'archivio chiavi sia stato trovato.

AVVISO: se il file dell'archivio chiavi si trova in un percorso diverso, sostituire %HOMEPATH%\.android\debug.keystore (Windows) o ~/.android/debug.keystore (MacOS) con il percorso del file dell'archivio chiavi.

  1. Dopo aver ottenuto la firma con codifica Base64. È possibile usarlo per configurare un filtro finalità per l'applicazione in modo che i browser possano restituire correttamente i codici di autorizzazione all'applicazione. Per rendere univoco il filtro intent sul dispositivo, oltre alla firma dell'applicazione vengono inclusi uno schema personalizzato "msauth" e il nome del pacchetto. Ecco un esempio:
//NOTE: the slash before your signature value added to the path attribute
//This uses the base64 encoded signature produced above.
<data android:scheme="msauth"
                    android:host="com.microsoft.identity.client.sample.local"
                    android:path="/1wIqXSqBj7w+h11ZifsnqwgyKrY="/>
  1. Il file di configurazione msal richiede qualcosa di leggermente diverso. Richiede che il valore della firma sia codificato in URL oltre a essere già stato codificato in base64. Ecco un esempio:
//NOTE that the signature part of the uri has been url encoded.  In this example.  The "+" character and the "=" character are affected.
"redirect_uri" : "msauth://com.microsoft.identity.client.sample.local/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",

Visualizzare la configurazione dell'URI di reindirizzamento dell'app assemblata

Per facilitare la creazione (o la risoluzione dei problemi) di registrazione dell'app, è stata aggiunta una funzione helper a PublicClientApplication, che consente di configurare e diagnosticare i problemi con l'URI di reindirizzamento, nonché di reindirizzare Activity.

A partire da MSAL 2.0.0, è possibile richiamare il metodo seguente per restituire la configurazione suggerita dell'applicazione.

// From any Activity in your app, call this static method
PublicClientApplication.showExpectedMsalRedirectUriInfo(MyActivity.this);

Informazioni sull'URI di reindirizzamento MSAL