MSAL Android Perguntas Frequentes

Problemas de URI de redirecionamento

O MSAL está configurado para usar autenticação intermediada por defeito. Para que isto funcione, precisa de construir um URI de redirecionamento usando as chaves de assinatura associadas à sua aplicação. Depois, o URI do redirecionamento tem de estar incluído tanto no ficheiro de configuração da aplicação como no manifesto do Android. Infelizmente, é necessária uma codificação diferente para cada um. Vamos fazer uma rápida explicação:

  1. A primeira coisa que precisa de fazer é localizar as suas chaves de assinatura para a sua candidatura. Normalmente, as chaves de debug estão na pasta principal, numa pasta oculta chamada ".android" numa loja de chaves Java chamada debug.keystore. O portal Azure fornece comandos úteis para gerar a assinatura da sua aplicação da seguinte forma:
  • 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

AVISO: Redirecionar a entrada/saída de comandos através de pipes é conveniente; no entanto, pode ocultar erros. Se o ficheiro keystore não for encontrado, por exemplo, a mensagem de erro será encaminhada para o openssl e o comando completo continuará a produzir um resultado semelhante ao esperado. Em caso de dúvida, execute o primeiro comando separadamente para se certificar de que está a funcionar.

AVISO: Será solicitado que forneça a palavra-passe da sua loja de chaves. A palavra-passe da keystore de depuração é simplesmente "android". Se não te pediram palavra-passe, há uma boa probabilidade de teres de executar separadamente as partes do comando acima para garantir que o ficheiro keystore foi encontrado.

AVISO: Se o seu ficheiro de loja de chaves estiver numa localização diferente, deve substituir %HOMEPATH%\.android\debug.keystore (Windows) ou ~/.android/debug.keystore (MacOS) pelo caminho para o ficheiro de loja de chaves.

  1. Depois de teres a tua assinatura codificada em base64. Pode usá-lo para configurar um filtro de intenção para a sua aplicação, de modo a que os navegadores possam devolver corretamente códigos de autorização à sua aplicação. Para tornar o filtro de intenções único num dispositivo, um esquema personalizado "msauth" e o nome do seu pacote são incluídos além da assinatura da sua aplicação. Eis um exemplo:
//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. O teu ficheiro de configuração MSAL requer algo um pouco diferente. Requer que o valor da assinatura seja codificado em url, além de já ter sido codificado em base64. Aqui está um exemplo:
//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",

Veja a configuração do URI de redirecionamento da sua aplicação montada

Para o ajudar a criar (ou resolver problemas) o registo da sua aplicação, adicionámos uma função auxiliar a PublicClientApplication, para o ajudar a configurar e diagnosticar problemas com o seu URI de redirecionamento, bem como a redirecionar Activity.

A partir do MSAL 2.0.0, pode invocar o seguinte método para gerar a configuração sugerida da sua aplicação.

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

Informação sobre o URI de redirecionamento MSAL