Android-Konfigurationsdatei für die Microsoft-Authentifizierungsbibliothek

Die Microsoft-Authentifizierungsbibliothek (Microsoft Authentication Library, MSAL) wird mit einer JSON-Standardkonfigurationsdatei ausgeliefert, die Sie anpassen, um das Verhalten Ihrer öffentlichen Client-App zu definieren, z. B. als Standardautorität, die von Ihnen verwendeten Autoritäten usw.

Dieser Artikel soll Ihnen helfen, die verschiedenen Einstellungen in der Konfigurationsdatei zu verstehen, und es wird darin erläutert, wie Sie die Konfigurationsdatei zur Verwendung in Ihrer MSAL-basierten App angeben.

Konfigurationseinstellungen

Allgemeine Einstellungen

Eigenschaft Datentyp Erforderlich Notizen
client_id String Ja Die Client-ID Ihrer App von der Seite für die Anwendungsregistrierung
redirect_uri String Ja Der Umleitungs-URI Ihrer App von der Seite für die Anwendungsregistrierung
broker_redirect_uri_registered Boolesch Nein Mögliche Werte: true, false
authorities List<Authority> Nein Die Liste der von Ihrer App benötigten Autoritäten
authorization_user_agent AuthorizationAgent (enum) Nein Mögliche Werte: WEBVIEW, BROWSER
http HttpConfiguration Nein Konfigurieren Sie HttpUrlConnectionconnect_timeout und read_timeout.
logging LoggingConfiguration Nein Gibt die Stufe des Protokollierungsdetails an. Optionale Konfigurationen umfassen: pii_enabled, die einen booleschen Wert annimmt, und log_level, die ERROR, WARNING, INFO oder VERBOSE annimmt.

client_id

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

redirect_uri

Der Umleitungs-URI, den Sie beim Registrieren Ihrer Anwendung registriert haben. Wenn der Umleitungs-URI zu einer Broker-App gehört, lesen Sie 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 Brokerauthentifizierung verwenden möchten, muss die Eigenschaft broker_redirect_uri_registered auf true festgelegt werden. Wenn die Anwendung in einem Szenario mit Brokerauthentifizierung nicht das richtige Format für die Kommunikation mit dem Broker (wie unter Umleitungs-URI für öffentliche Client-Apps beschrieben) aufweist, überprüft die Anwendung Ihren Umleitungs-URI und löst eine Ausnahme aus, wenn sie gestartet wird.

authorities

Die Liste von Autoritäten, die Ihnen bekannt sind und von Ihnen als vertrauenswürdig eingestuft werden. Zusätzlich zu den hier aufgelisteten Autoritäten fragt die MSAL auch Microsoft ab, um eine Liste der Clouds und Autoritäten zu erhalten, die Microsoft bekannt sind. Geben Sie in dieser Liste von Autoritäten den Typ der Autorität und alle zusätzlichen optionalen Parameter an, z.B. "audience", die auf der Grundlage der Registrierung Ihrer App mit der Zielgruppe Ihrer App übereinstimmen sollten. Im Folgenden finden Sie eine Beispielliste von Autoritäten:

// 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 der Microsoft Entra-Autorität & -Zielgruppe zu Microsoft Identity Platform-Endpunkten

type Zielgruppe Mandanten-ID Authority_Url Resultierender Endpunkt Hinweise
Microsoft Entra ID AzureADandPersonalMicrosoftAccount https://login.microsoftonline.com/common common ist ein Mandantenalias für den Speicherort des Kontos. Beispielsweise ein bestimmter Microsoft Entra Mandant oder das Microsoft-Kontosystem.
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 beliebige überprüfte Domäne oder die Mandanten-GUID kann als Mandanten-ID verwendet werden.
Microsoft Entra ID AzureADMultipleOrgs https://login.microsoftonline.com/organizations Mit diesem Endpunkt können nur Microsoft Entra-Konten verwendet werden. Microsoft-Konten können Mitglieder von Organisationen sein. Wenn Sie ein Token über ein Microsoft-Konto für eine Ressource in einer Organisation abrufen möchten, geben Sie den Organisationsmandanten an, dessen Token Sie verwenden möchten.
Microsoft Entra ID PersonalMicrosoftAccount https://login.microsoftonline.com/consumers Dieser Endpunkt kann nur von Microsoft-Konten verwendet werden.
B2C Anzeigen des resultierenden Endpunkts https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ Nur Konten, die im Mandanten „contoso.onmicrosoft.com“ vorhanden sind, können ein Token abrufen. In diesem Beispiel ist die B2C-Richtlinie Teil des Autoritäts-URL-Pfads.

Hinweis

Die Autoritätsüberprüfung kann in der MSAL nicht aktiviert und deaktiviert werden. Autoritäten sind Ihnen entweder als Entwickler bekannt, wie über die Konfiguration festgelegt wurde, oder sie sind Microsoft über Metadaten bekannt. Wenn die MSAL eine Anforderung für ein Token an eine unbekannte Autorität erhält, wird eine MsalClientException vom Typ UnknownAuthority ausgegeben. Die Brokerauthentifizierung funktioniert nicht für Azure AD B2C.

Eigenschaften von Autoritäten

Eigenschaft Datentyp Erforderlich Notizen
type String Ja Entspricht der Zielgruppe oder dem Kontotyp Ihrer App-Ziele. Mögliche Werte: AAD, B2C
audience Object Nein Gilt nur, wenn „type“=AAD ist. Gibt die Identität ihrer App-Ziele an. Verwenden Sie den Wert aus Ihrer App-Registrierung.
authority_url String Ja Nur erforderlich, wenn „type“=B2C ist. Optional für type=AAD. Gibt die Autoritäts-URL oder Richtlinie an, die Ihre App verwenden sollte.
default boolean Ja Wenn eine oder mehrere Autoritäten angegeben werden, ist ein einzelnes "default":true erforderlich.

Eigenschaften der Zielgruppe

Eigenschaft Datentyp Erforderlich Notizen
type String Ja Gibt die Zielgruppe an, auf die Ihre App abzielen möchte. Mögliche Werte: AzureADandPersonalMicrosoftAccount, PersonalMicrosoftAccount, AzureADMultipleOrgs, AzureADMyOrg
tenant_id String Ja Nur erforderlich, wenn "type":"AzureADMyOrg" ist. Optional bei anderen type-Werten. Dies kann eine Mandantendomäne (z. B. contoso.com) oder eine Mandanten-ID sein (z. B. 00001111-aaaa-2222-bbbb-3333cccc4444)

authorization_user_agent

Gibt an, ob eine eingebettete Webansicht oder der Standardbrowser auf dem Gerät verwendet werden soll, wenn ein Konto angemeldet oder der Zugriff auf eine Ressource autorisiert wird.

Mögliche Werte:

  • WEBVIEW: Verwendet die eingebettete Webansicht.
  • BROWSER: Verwendet den Standardbrowser auf dem Gerät.

multiple_clouds_supported

Geben Sie bei Clients, die mehrere nationale Clouds unterstützen, true an. Die Microsoft Identity Platform leitet dann während der Autorisierung und der Einlösung von Token automatisch zur richtigen nationalen Cloud um. Sie können die nationale Cloud des angemeldeten Kontos ermitteln, indem Sie die dem AuthenticationResult zugeordnete Autorität untersuchen. Beachten Sie, dass das AuthenticationResult nicht die für die nationale Cloud spezifische Endpunktadresse der Ressource liefert, für die Sie ein Token anfordern.

broker_redirect_uri_registered

Ein boolescher Wert, der angibt, ob Sie einen mit Microsoft-Identitätsbroker kompatiblen Umleitungs-URI für den Broker verwenden. Legen Sie den Wert auf false fest, wenn Sie den Broker nicht innerhalb Ihrer App verwenden möchten.

Wenn Sie die Microsoft Entra-Autorität verwenden, bei der die Zielgruppe auf "MicrosoftPersonalAccount" festgelegt wurde, wird der Broker nicht verwendet.

http

Konfigurieren Sie globale Einstellungen für HTTP-Zeitlimits, z.B.:

Eigenschaft Datentyp Erforderlich Notizen
connect_timeout INT Nein Zeit in Millisekunden
read_timeout INT Nein Zeit in Millisekunden

logging

Die folgenden globalen Einstellungen gelten für die Protokollierung:

Eigenschaft Datentyp Erforderlich Notizen
pii_enabled boolean Nein Gibt an, ob persönliche Daten ausgegeben werden sollen.
log_level Zeichenfolge Nein Gibt an, welche Protokollmeldungen ausgegeben werden sollen. Die unterstützten Protokollierungsebenen sind beispielsweise ERROR, WARNING, INFO und VERBOSE.
logcat_enabled boolean Nein Gibt an, ob die Ausgabe an die Protokollkategorie zusätzlich zur Protokollierungsschnittstelle ausgegeben werden soll.

account_mode

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

  • MULTIPLE (Standard)
  • SINGLE

Das Erstellen einer PublicClientApplication unter Verwendung eines Kontomodus, der dieser Einstellung nicht entspricht, führt zu einer Ausnahme.

Weitere Informationen zu den Unterschieden zwischen einzelnen und mehreren Konten finden Sie unter Apps für einzelne und mehrere Konten.

browser_safelist

Eine Zulassungsliste der mit der MSAL kompatiblen Browser. Diese Browser verarbeiten ordnungsgemäß Umleitungen an benutzerdefinierte Absichten. Sie können sie dieser Liste hinzufügen. Der Standardwert wird in der unten gezeigten Standardkonfiguration bereitgestellt. ``

Die MSAL-Standardkonfigurationsdatei

Die MSAL-Standardkonfiguration, die mit MSAL ausgeliefert wird, ist unten dargestellt. Die neueste Version können Sie 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": [
        "7fmduHKTdHHrlMvldlEqAIlSfii1tl35bxj1OXN5Ve8c4lU6URVu4xtSHc3BVZxS6WWJnxMDhIfQN0N0K2NDJg=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "45"
    },
    {
      "browser_package_name": "com.android.chrome",
      "browser_signature_hashes": [
        "7fmduHKTdHHrlMvldlEqAIlSfii1tl35bxj1OXN5Ve8c4lU6URVu4xtSHc3BVZxS6WWJnxMDhIfQN0N0K2NDJg=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "org.mozilla.firefox",
      "browser_signature_hashes": [
        "2gCe6pR_AO_Q2Vu8Iep-4AsiKNnUHQxu0FaDHO_qa178GByKybdT_BuE8_dYk99G5Uvx_gdONXAOO2EaXidpVQ=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "org.mozilla.firefox",
      "browser_signature_hashes": [
        "2gCe6pR_AO_Q2Vu8Iep-4AsiKNnUHQxu0FaDHO_qa178GByKybdT_BuE8_dYk99G5Uvx_gdONXAOO2EaXidpVQ=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "57"
    },
    {
      "browser_package_name": "com.sec.android.app.sbrowser",
      "browser_signature_hashes": [
        "ABi2fbt8vkzj7SJ8aD5jc4xJFTDFntdkMrYXL3itsvqY1QIw-dZozdop5rgKNxjbrQAd5nntAGpgh9w84O1Xgg=="
      ],
      "browser_use_customTab" : true,
      "browser_version_lower_bound": "4.0"
    },
    {
      "browser_package_name": "com.sec.android.app.sbrowser",
      "browser_signature_hashes": [
        "ABi2fbt8vkzj7SJ8aD5jc4xJFTDFntdkMrYXL3itsvqY1QIw-dZozdop5rgKNxjbrQAd5nntAGpgh9w84O1Xgg=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.cloudmosa.puffinFree",
      "browser_signature_hashes": [
        "1WqG8SoK2WvE4NTYgr2550TRhjhxT-7DWxu6C_o6GrOLK6xzG67Hq7GCGDjkAFRCOChlo2XUUglLRAYu3Mn8Ag=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.duckduckgo.mobile.android",
      "browser_signature_hashes": [
        "S5Av4cfEycCvIvKPpKGjyCuAE5gZ8y60-knFfGkAEIZWPr9lU5kA7iOAlSZxaJei08s0ruDvuEzFYlmH-jAi4Q=="
      ],
      "browser_use_customTab" : false
    },
    {
      "browser_package_name": "com.explore.web.browser",
      "browser_signature_hashes": [
        "BzDzBVSAwah8f_A0MYJCPOkt0eb7WcIEw6Udn7VLcizjoU3wxAzVisCm6bW7uTs4WpMfBEJYf0nDgzTYvYHCag=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "com.ksmobile.cb",
      "browser_signature_hashes": [
        "lFDYx1Rwc7_XUn4KlfQk2klXLufRyuGHLa3a7rNjqQMkMaxZueQfxukVTvA7yKKp3Md3XUeeDSWGIZcRy7nouw=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "com.microsoft.emmx",
      "browser_signature_hashes": [
        "Ivy-Rk6ztai_IudfbyUrSHugzRqAtHWslFvHT0PTvLMsEKLUIgv7ZZbVxygWy_M5mOPpfjZrd3vOx3t-cA6fVQ=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "com.opera.browser",
      "browser_signature_hashes": [
        "FIJ3IIeqB7V0qHpRNEpYNkhEGA_eJaf7ntca-Oa_6Feev3UkgnpguTNV31JdAmpEFPGNPo0RHqdlU0k-3jWJWw=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "com.opera.mini.native",
      "browser_signature_hashes": [
        "TOTyHs086iGIEdxrX_24aAewTZxV7Wbi6niS2ZrpPhLkjuZPAh1c3NQ_U4Lx1KdgyhQE4BiS36MIfP6LbmmUYQ=="
      ],
      "browser_use_customTab" : false
    },

    {
      "browser_package_name": "mobi.mgeek.TunnyBrowser",
      "browser_signature_hashes": [
        "RMVoXuK1sfJZuGZ8onG1yhMc-sKiAV2NiB_GZfdNlN8XJ78XEE2wPM6LnQiyltF25GkHiPN2iKQiGwaO2bkyyQ=="
      ],
      "browser_use_customTab" : false
    },

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

Beispiel für eine Standardkonfiguration

Das folgende Beispiel veranschaulicht eine Standardkonfiguration, die die Client-ID, den Umleitungs-URI, ob eine Brokerumleitung registriert ist, und eine Liste von Autoritäten angibt.

{
  "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, dass Sie Ihre benutzerdefinierte Konfigurationsdatei in res/raw/auth_config.json erstellen. Sie können sie aber an einem beliebigen Ort speichern.

  2. Informieren Sie die MSAL, wo sie nach ihrer Konfiguration suchen soll, wenn Sie die PublicClientApplication erstellen. Beispiel:

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