File di configurazione di Android Microsoft Authentication Library
Android Microsoft Authentication Library (MSAL) viene fornito con un file JSON di configurazione predefinito personalizzato per definire il comportamento dell'app client pubblica per elementi come l'autorità predefinita, le autorità che verranno usate e così via.
Questo articolo illustra le varie impostazioni nel file di configurazione e come specificare il file di configurazione da usare nell'app basata su MSAL.
Impostazioni di configurazione
Impostazioni generali
Proprietà | Tipo di dati | Richiesto | Note |
---|---|---|---|
client_id |
String | Sì | ID client dell'app dalla pagina Registrazione dell'applicazione |
redirect_uri |
String | Sì | URI di reindirizzamento dell'app dalla pagina Registrazione dell'applicazione |
broker_redirect_uri_registered |
Boolean | No | Valori possibili: true , false |
authorities |
Autorità elenco<> | No | Elenco delle autorità necessarie per l'app |
authorization_user_agent |
AuthorizationAgent (enum) | No | Valori possibili: WEBVIEW , BROWSER |
http |
HttpConfiguration | No | Configurare HttpUrlConnection connect_timeout e read_timeout |
logging |
LoggingConfiguration | No | Specifica il livello di dettaglio della registrazione. Le configurazioni facoltative includono: pii_enabled , che accetta un valore booleano e log_level , che accetta ERROR , WARNING INFO , o VERBOSE . |
client_id
ID client o ID app creato al momento della registrazione dell'applicazione.
redirect_uri
URI di reindirizzamento registrato durante la registrazione dell'applicazione. Se l'URI di reindirizzamento si trova in un'app broker, vedere URI di reindirizzamento per le app client pubbliche per assicurarsi di usare il formato URI di reindirizzamento corretto per l'app broker.
broker_redirect_uri_registered
Se si vuole usare l'autenticazione negoziata, la broker_redirect_uri_registered
proprietà deve essere impostata su true
. In uno scenario di autenticazione negoziata, se l'applicazione non è nel formato corretto per comunicare con il broker come descritto in URI di reindirizzamento per le app client pubbliche, l'applicazione convalida l'URI di reindirizzamento e genera un'eccezione all'avvio.
autorità
L'elenco delle autorità che sono note e attendibili da voi. Oltre alle autorità elencate qui, MSAL interroga Microsoft anche per ottenere un elenco di cloud e autorità note a Microsoft. In questo elenco di autorità specificare il tipo di autorità e gli eventuali parametri facoltativi aggiuntivi, "audience"
ad esempio , che devono essere allineati al pubblico dell'app in base alla registrazione dell'app. Di seguito è riportato un elenco di fonti di esempio:
// Example AzureAD and Personal Microsoft Account
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount"
},
"default": true // Indicates that this is the default to use if not provided as part of the acquireToken call
},
// Example AzureAD My Organization
{
"type": "AAD",
"audience": {
"type": "AzureADMyOrg",
"tenant_id": "contoso.com" // Provide your specific tenant ID here
}
},
// Example AzureAD Multiple Organizations
{
"type": "AAD",
"audience": {
"type": "AzureADMultipleOrgs"
}
},
//Example PersonalMicrosoftAccount
{
"type": "AAD",
"audience": {
"type": "PersonalMicrosoftAccount"
}
}
Eseguire il mapping dell'autorità e del pubblico di Microsoft Entra agli endpoint di Microsoft Identity Platform
Type | Destinatari | ID tenant | Authority_Url | Endpoint risultante | Note |
---|---|---|---|---|---|
Microsoft Entra ID | AzureADandPersonalMicrosoftAccount | https://login.microsoftonline.com/common |
common è un alias tenant per dove si trova l'account. Ad esempio un tenant Microsoft Entra specifico o il sistema di account Microsoft. |
||
Microsoft Entra ID | AzureADMyOrg | contoso.com | https://login.microsoftonline.com/contoso.com |
Solo gli account presenti in contoso.com possono acquisire un token. Qualsiasi dominio verificato o GUID del tenant può essere usato come ID tenant. | |
Microsoft Entra ID | AzureADMultipleOrgs | https://login.microsoftonline.com/organizations |
Solo gli account Microsoft Entra possono essere usati con questo endpoint. Gli account Microsoft possono essere membri delle organizzazioni. Per acquisire un token usando un account Microsoft per una risorsa in un'organizzazione, specificare il tenant dell'organizzazione da cui si vuole il token. | ||
Microsoft Entra ID | PersonalMicrosoftAccount | https://login.microsoftonline.com/consumers |
Solo gli account Microsoft possono usare questo endpoint. | ||
B2C | Vedere Endpoint risultante | https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ |
Solo gli account presenti nel tenant contoso.onmicrosoft.com possono acquisire un token. In questo esempio, il criterio B2C fa parte del percorso URL autorità. |
Nota
La convalida dell'autorità non può essere abilitata e disabilitata in MSAL.
Le autorità sono note all'utente come sviluppatore come specificato tramite la configurazione o note a Microsoft tramite metadati.
Se MSAL riceve una richiesta per un token a un'autorità sconosciuta, un di tipo UnknownAuthority
restituisce MsalClientException
risultati.
L'autenticazione negoziata non funziona per Azure AD B2C.
Proprietà dell'autorità
Proprietà | Tipo di dati | Richiesto | Note |
---|---|---|---|
type |
String | Sì | Rispecchia il gruppo di destinatari o il tipo di account di destinazione dell'app. Valori possibili: AAD , B2C |
audience |
Object | No | Si applica solo quando type=AAD . Specifica l'identità di destinazione dell'app. Usare il valore della registrazione dell'app |
authority_url |
String | Sì | Obbligatorio solo quando type=B2C . Facoltativo per type=AAD . Specifica l'URL dell'autorità o i criteri che l'app deve usare |
default |
boolean | Sì | Quando si specifica una o più autorità, è necessario un singolo "default":true oggetto . |
Proprietà gruppo di destinatari
Proprietà | Tipo di dati | Richiesto | Note |
---|---|---|---|
type |
String | Sì | Specifica il gruppo di destinatari che l'app vuole specificare come destinazione. Valori possibili: AzureADandPersonalMicrosoftAccount , PersonalMicrosoftAccount , AzureADMultipleOrgs , AzureADMyOrg |
tenant_id |
String | Sì | Obbligatorio solo quando "type":"AzureADMyOrg" . Facoltativo per altri type valori. Può trattarsi di un dominio tenant, contoso.com ad esempio , o di un ID tenant, ad esempio aaaabbbb-0000-cccc-1111-dddd2222eeee |
authorization_user_agent
Indica se usare una visualizzazione Web incorporata o il browser predefinito nel dispositivo, quando si accede a un account o si autorizza l'accesso a una risorsa.
Valori possibili:
WEBVIEW
: usare la visualizzazione Web incorporata.BROWSER
: usa il browser predefinito nel dispositivo.
multiple_clouds_supported
Per i client che supportano più cloud nazionali, specificare true
. Microsoft Identity Platform verrà quindi reindirizzato automaticamente al cloud nazionale corretto durante l'autorizzazione e il riscatto dei token. È possibile determinare il cloud nazionale dell'account connesso esaminando l'autorità associata a AuthenticationResult
. Si noti che AuthenticationResult
non fornisce l'indirizzo endpoint specifico del cloud nazionale della risorsa per cui si richiede un token.
broker_redirect_uri_registered
Valore booleano che indica se si usa un URI di reindirizzamento in broker compatibile con Microsoft Identity Broker. Impostare su false
se non si vuole usare il broker all'interno dell'app.
Se si usa Microsoft Entra Authority con Audience impostato su "MicrosoftPersonalAccount"
, il broker non verrà usato.
http
Configurare le impostazioni globali per i timeout HTTP, ad esempio:
Proprietà | Tipo di dati | Richiesto | Note |
---|---|---|---|
connect_timeout |
int | No | Tempo in millisecondi |
read_timeout |
int | No | Tempo in millisecondi |
registrazione
Per la registrazione sono disponibili le impostazioni globali seguenti:
Proprietà | Tipo di dati | Richiesto | Note |
---|---|---|---|
pii_enabled |
boolean | No | Indica se generare dati personali |
log_level |
string | No | Messaggi di log per l'output. I livelli di log supportati includono ERROR ,WARNING INFO e VERBOSE . |
logcat_enabled |
boolean | No | Indica se eseguire l'output per registrare cat oltre all'interfaccia di registrazione |
account_mode
Specifica il numero di account che possono essere usati all'interno dell'app alla volta. I valori possibili sono:
MULTIPLE
(impostazione predefinita)SINGLE
La creazione di un PublicClientApplication
oggetto usando una modalità account che non corrisponde a questa impostazione genererà un'eccezione.
Per altre informazioni sulle differenze tra account singoli e multipli, vedere App con account singoli e multipli.
browser_safelist
Elenco di browser compatibili con MSAL. Questi browser gestiscono correttamente i reindirizzamenti alle finalità personalizzate. È possibile aggiungere a questo elenco. Il valore predefinito è specificato nella configurazione predefinita illustrata di seguito. ``
File di configurazione MSAL predefinito
La configurazione MSAL predefinita fornita con MSAL è illustrata di seguito. È possibile visualizzare la versione più recente in GitHub.
Questa configurazione è integrata dai valori forniti dall'utente. I valori specificati sostituiscono le impostazioni predefinite.
{
"authorities": [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount"
},
"default": true
}
],
"authorization_user_agent": "DEFAULT",
"multiple_clouds_supported": false,
"broker_redirect_uri_registered": false,
"http": {
"connect_timeout": 10000,
"read_timeout": 30000
},
"logging": {
"pii_enabled": false,
"log_level": "WARNING",
"logcat_enabled": false
},
"shared_device_mode_supported": false,
"account_mode": "MULTIPLE",
"browser_safelist": [
{
"browser_package_name": "com.android.chrome",
"browser_signature_hashes": [
"aB1cD2eF3gH4iJ5kL6-mN7oP8qR=="
],
"browser_use_customTab" : true,
"browser_version_lower_bound": "45"
},
{
"browser_package_name": "com.android.chrome",
"browser_signature_hashes": [
"cD2eF3gH4iJ5kL6mN7-oP8qR9sT=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "org.mozilla.firefox",
"browser_signature_hashes": [
"eF3gH4iJ5kL6mN7oP8-qR9sT0uV=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "org.mozilla.firefox",
"browser_signature_hashes": [
"gH4iJ5kL6mN7oP8qR9-sT0uV1wX=="
],
"browser_use_customTab" : true,
"browser_version_lower_bound": "57"
},
{
"browser_package_name": "com.sec.android.app.sbrowser",
"browser_signature_hashes": [
"iJ5kL6mN7oP8qR9sT0-uV1wX2yZ=="
],
"browser_use_customTab" : true,
"browser_version_lower_bound": "4.0"
},
{
"browser_package_name": "com.sec.android.app.sbrowser",
"browser_signature_hashes": [
"kL6mN7oP8qR9sT0uV1-wX2yZ3aB=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.cloudmosa.puffinFree",
"browser_signature_hashes": [
"mN7oP8qR9sT0uV1wX2-yZ3aB4dE="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.duckduckgo.mobile.android",
"browser_signature_hashes": [
"S5Av4...jAi4Q=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.explore.web.browser",
"browser_signature_hashes": [
"BzDzB...YHCag=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.ksmobile.cb",
"browser_signature_hashes": [
"lFDYx...7nouw=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.microsoft.emmx",
"browser_signature_hashes": [
"Ivy-R...A6fVQ=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.opera.browser",
"browser_signature_hashes": [
"FIJ3I...jWJWw=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.opera.mini.native",
"browser_signature_hashes": [
"TOTyH...mmUYQ=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "mobi.mgeek.TunnyBrowser",
"browser_signature_hashes": [
"RMVoXgjjgyjjmbj4578fcbkyyQ=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "org.mozilla.focus",
"browser_signature_hashes": [
"L72dT...q0oYA=="
],
"browser_use_customTab" : false
}
]
}
Esempio di configurazione di base
Nell'esempio seguente viene illustrata una configurazione di base che specifica l'ID client, l'URI di reindirizzamento, se un reindirizzamento broker è registrato e un elenco di autorità.
{
"client_id" : "00001111-aaaa-2222-bbbb-3333cccc4444",
"redirect_uri" : "msauth://com.microsoft.identity.client.sample.local/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
"broker_redirect_uri_registered": true,
"authorities" : [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount"
}
"default": true
}
]
}
Come usare un file di configurazione
Creare un file di configurazione È consigliabile creare il file di configurazione personalizzato in
res/raw/auth_config.json
. Ma puoi metterlo ovunque desideri.Indicare a MSAL dove cercare la configurazione quando si costruisce .
PublicClientApplication
Ad esempio://On Worker Thread IMultipleAccountPublicClientApplication sampleApp = null; sampleApp = new PublicClientApplication.createMultipleAccountPublicClientApplication(getApplicationContext(), R.raw.auth_config);