Android Microsoft Authentication Library (MSAL) Konfigurationsdatei

Die Android-Microsoft Authentication Library (MSAL) (MSAL) enthält eine JSON-Standardkonfigurationsdatei, die Sie anpassen, um das Verhalten Ihrer öffentlichen Client-App für Dinge wie die Standardautorität, die von Ihnen verwendeten Behörden usw. zu definieren.

Dieser Artikel hilft Ihnen, die verschiedenen Einstellungen in der Konfigurationsdatei zu verstehen und die Konfigurationsdatei anzugeben, die in Ihrer MSAL-basierten App verwendet werden soll.

Konfigurationseinstellungen

Allgemeine Einstellungen

Eigentum Datentyp Erforderlich Hinweise
client_id String Ja Client-ID Ihrer App über die Anwendungsregistrierungsseite
redirect_uri String Ja Umleitungs-URI Ihrer App über die Anwendungsregistrierungsseite
broker_redirect_uri_registered Boolean No Mögliche Werte: true, false
authorities Autorität auflisten<> No Die Liste der Behörden, die Ihre App benötigt
authorization_user_agent AuthorizationAgent (Enumeration) No Mögliche Werte: DEFAULT, , BROWSERWEBVIEW
http HttpConfiguration No Konfigurieren HttpUrlConnectionconnect_timeout und read_timeout
logging ProtokollierungKonfiguration No Gibt die Ebene der Protokollierungsdetails an. Optionale Konfigurationen umfassen: pii_enabled, die einen booleschen Wert akzeptiert und log_level, die ERROR, die , , WARNING, oder INFOVERBOSE.

client_id

Die Client-ID oder App-ID, die beim Registrieren der Anwendung erstellt wurde.

Weiterleitungs-URI

Der Umleitungs-URI, den Sie beim Registrieren der Anwendung registriert haben. Wenn sich der Umleitungs-URI auf eine Broker-App bezieht, lesen Sie den Umleitungs-URI für öffentliche Client-Apps , um sicherzustellen, dass Sie das richtige Umleitungs-URI-Format für Ihre Broker-App verwenden.

broker_redirect_uri_registered

Wenn Sie die brokerierte Authentifizierung verwenden möchten, muss die broker_redirect_uri_registered Eigenschaft auf .true Wenn sich die Anwendung in einem Szenario mit brokerischer Authentifizierung nicht im richtigen Format befindet, um mit dem Broker zu sprechen, wie unter Umleitungs-URI für öffentliche Client-Apps beschrieben, überprüft die Anwendung Ihren Umleitungs-URI und löst beim Start eine Ausnahme aus.

authorities

Die Liste der Behörden, die von Ihnen bekannt und vertrauenswürdig sind. Zusätzlich zu den hier aufgeführten Behörden fragt MSAL auch Microsoft ab, um eine Liste der Clouds und Behörden zu erhalten, die Microsoft bekannt sind. Geben Sie in dieser Liste der Autoritäten den Typ der Autorität und alle zusätzlichen optionalen Parameter an "audience", z. B. die an die Zielgruppe Ihrer App basierend auf der Registrierung Ihrer App ausgerichtet werden sollen. Es folgt eine Beispielliste der Behörden:

// 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"
    }
}

Zuordnen Microsoft Entra Autorität und Zielgruppe zu Microsoft Identity Platform Endpunkten

Typ Publikum Mieter-ID Authority_Url Resultierender Endpunkt Hinweise
Microsoft Entra ID Azure AD und persönliches Microsoft-Konto https://login.microsoftonline.com/common common ist ein Mandantalias für den Speicherort des Kontos. Beispielsweise ein bestimmter Microsoft Entra Mandant oder das Microsoft-Konto System.
Microsoft Entra ID AzureADMyOrg contoso.com https://login.microsoftonline.com/contoso.com Nur Konten, die in contoso.com vorhanden sind, können ein Token abrufen. Jede überprüfte Domäne oder die Mandanten-GUID kann als Mandanten-ID verwendet werden.
Microsoft Entra ID AzureADMultipleOrgs https://login.microsoftonline.com/organizations Nur Microsoft Entra Konten können mit diesem Endpunkt verwendet werden. Microsoft Konten können Mitglieder von Organisationen sein. Wenn Sie ein Token mithilfe einer Microsoft-Konto für eine Ressource in einer Organisation abrufen möchten, geben Sie den Organisationsmandanten an, aus dem das Token abgerufen werden soll.
Microsoft Entra ID Persönliches Microsoft-Konto https://login.microsoftonline.com/consumers Nur Microsoft Konten können diesen Endpunkt verwenden.
B2C Siehe resultierender Endpunkt https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ Nur Konten, die im contoso.onmicrosoft.com Mandanten vorhanden sind, können ein Token abrufen. In diesem Beispiel ist die B2C-Richtlinie Teil des Autoritäts-URL-Pfads.

Note

Die Autoritätsüberprüfung kann in MSAL nicht aktiviert und deaktiviert werden. Behörden sind Ihnen entweder als Entwickler bekannt, wie über die Konfiguration angegeben oder über Metadaten als Microsoft bekannt. Wenn MSAL eine Anforderung für ein Token an eine unbekannte Autorität empfängt, ergibt sich ein MsalClientException Typergebnis UnknownAuthority . Die vermittelte Authentifizierung funktioniert nicht für Azure AD B2C.

Autoritätseigenschaften

Eigentum Datentyp Erforderlich Hinweise
type String Ja Spiegelt die Zielgruppe oder den Kontotyp Ihrer App-Ziele wieder. Mögliche Werte: AAD, B2C
audience Object No Gilt nur, wenn type=AAD. Gibt die Identität an, die Ihre App angibt. Verwenden des Werts aus der App-Registrierung
authority_url String Ja Nur erforderlich, wenn type=B2C. Optional für type=AAD. Gibt die Autoritäts-URL oder Richtlinie an, die Ihre App verwenden soll
default boolean Ja Ein Einzelner "default":true ist erforderlich, wenn eine oder mehrere Behörden angegeben werden.

Zielgruppeneigenschaften

Eigentum Datentyp Erforderlich Hinweise
type String Ja Gibt die Zielgruppe an, auf die Ihre App ausgerichtet werden soll. Mögliche Werte: AzureADandPersonalMicrosoftAccount, , PersonalMicrosoftAccount, AzureADMultipleOrgsAzureADMyOrg
tenant_id String Ja Nur erforderlich, wenn "type":"AzureADMyOrg". Optional für andere type Werte. Dies kann eine Mandantendomäne wie contoso.comz. B. eine Mandanten-ID oder eine Mandanten-ID sein, z. B. aaaabbbb-0000-cccc-1111-dddd2222eeee

authorization_user_agent

Gibt an, ob eine eingebettete Webansicht oder der Standardbrowser auf dem Gerät verwendet werden soll, wenn Sie sich bei einem Konto anmelden oder den Zugriff auf eine Ressource autorisieren.

Mögliche Werte:

  • DEFAULT: Bevorzugt den Systembrowser. Verwendet die eingebettete Webansicht, wenn ein Browser auf dem Gerät nicht verfügbar ist.
  • WEBVIEW: Verwenden Sie die eingebettete Webansicht.
  • BROWSER: Verwendet den Standardbrowser auf dem Gerät.

multiple_clouds_supported

Geben Sie für Clients, die mehrere nationale Clouds unterstützen, an true. Die Microsoft Identity Platform leitet dann während der Autorisierung und Tokeneinlösung automatisch zur richtigen nationalen Cloud um. Sie können die nationale Cloud des angemeldeten Kontos ermitteln, indem Sie die mit der AuthenticationResult. Beachten Sie, dass die AuthenticationResult nationale cloudspezifische Endpunktadresse der Ressource, für die Sie ein Token anfordern, nicht bereitstellt.

broker_redirect_uri_registered

Ein boolescher Wert, der angibt, ob Sie einen Microsoft identitätsbrokerkompatiblen Umleitungs-URI verwenden. Legen Sie diesen false Wert fest, wenn Sie den Broker nicht in Ihrer App verwenden möchten.

Wenn Sie die Microsoft Entra Authority für Zielgruppe verwenden"MicrosoftPersonalAccount", wird der Broker nicht verwendet.

http

Konfigurieren sie globale Einstellungen für HTTP-Timeouts, z. B.:

Eigentum Datentyp Erforderlich Hinweise
connect_timeout int No Zeit in Millisekunden
read_timeout int No Zeit in Millisekunden

logging

Die folgenden globalen Einstellungen sind für die Protokollierung vorgesehen:

Eigentum Datentyp Erforderlich Hinweise
pii_enabled boolean No Gibt an, ob personenbezogene Daten ausgegeben werden sollen.
log_level string No Welche Protokollnachrichten ausgegeben werden sollen. Unterstützte Protokollebenen umfassen ERROR,WARNING,,INFO und VERBOSE.
logcat_enabled boolean No Gibt an, ob zusätzlich zur Protokollierungsschnittstelle die Katze protokolliert werden soll

account_mode

Gibt an, wie viele Konten in Ihrer App gleichzeitig verwendet werden können. Mögliche Werte sind:

  • MULTIPLE (Standard)
  • SINGLE

Das Erstellen eines PublicClientApplication Kontomodus, der nicht mit dieser Einstellung übereinstimmt, führt zu einer Ausnahme.

Weitere Informationen zu den Unterschieden zwischen einzelnen und mehreren Konten finden Sie unter Einzel- und Mehrere Konto-Apps.

browser_safelist

Eine Zulassungsliste von Browsern, die mit MSAL kompatibel sind. Diese Browser behandeln Umleitungen ordnungsgemäß zu benutzerdefinierten Absichten. Sie können dieser Liste hinzufügen. Der Standardwert wird in der unten gezeigten Standardkonfiguration bereitgestellt. ``

Die MSAL-Standardkonfigurationsdatei

Die standardmäßige MSAL-Konfiguration, die mit MSAL ausgeliefert wird, wird unten angezeigt. Sie können die neueste Version auf GitHub sehen.

Diese Konfiguration wird durch von Ihnen bereitgestellte Werte ergänzt. Die von Ihnen bereitgestellten Werte setzen die Standardwerte außer Kraft.

{
  "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": [
        "7fmdu...2NDJg=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "45"
    },
    {
      "browser_package_name": "com.android.chrome",
      "browser_signature_hashes": [
        "7fmdu...2NDJg=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "org.mozilla.firefox",
      "browser_signature_hashes": [
        "2gCe6...idpVQ=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "org.mozilla.firefox",
      "browser_signature_hashes": [
        "2gCe6...idpVQ=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "57"
    },
    {
      "browser_package_name": "com.sec.android.app.sbrowser",
      "browser_signature_hashes": [
        "ABi2f...4O1Xgg=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "4.0"
    },
    {
      "browser_package_name": "com.sec.android.app.sbrowser",
      "browser_signature_hashes": [
        "ABi2f...O1Xgg=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.cloudmosa.puffinFree",
      "browser_signature_hashes": [
        "1WqG8...Mn8Ag=="
      ],
      "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": [
        "RMVoX...bkyyQ=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "org.mozilla.focus",
      "browser_signature_hashes": [
        "L72dT...q0oYA=="
      ],
      "browser_use_customTab" : false
    }
  ]
}

Beispiel für eine einfache Konfiguration

Das folgende Beispiel veranschaulicht eine grundlegende Konfiguration, die die Client-ID, den Umleitungs-URI angibt, ob eine Brokerumleitung registriert ist, und eine Liste der Behörden.

{
  "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
    }
  ]
}

Verwenden einer Konfigurationsdatei

  1. Erstellen Sie eine Konfigurationsdatei. Es wird empfohlen, ihre benutzerdefinierte Konfigurationsdatei in res/raw/auth_config.json. Aber Sie können es überall platzieren, was Sie wünschen.

  2. Teilen Sie MSAL mit, wo Sie beim Erstellen der PublicClientApplicationKonfiguration nach Ihrer Konfiguration suchen sollen. Beispiel:

    //On Worker Thread
    IMultipleAccountPublicClientApplication sampleApp = null; 
    sampleApp = new PublicClientApplication.createMultipleAccountPublicClientApplication(getApplicationContext(), R.raw.auth_config);