Plik konfiguracji biblioteki uwierzytelniania firmy Microsoft dla systemu Android

Biblioteka Microsoft Authentication Library (MSAL) systemu Android jest dostarczana z domyślnym plikiem JSON konfiguracji, który można dostosować, aby zdefiniować zachowanie publicznej aplikacji klienckiej dla takich elementów jak urząd domyślny, którego będziesz używać, itd.

Ten artykuł pomoże Zrozumieć różne ustawienia w pliku konfiguracji i jak określić plik konfiguracji do użycia w aplikacji opartej na biblioteki MSAL.

Ustawienia konfiguracji

Ustawienia ogólne

Właściwości Typ danych Wymagania Uwagi
client_id String Tak Identyfikator klienta aplikacji ze strony rejestracji aplikacji
redirect_uri String Tak Identyfikator URI przekierowania aplikacji ze strony rejestracji aplikacji
broker_redirect_uri_registered Wartość logiczna Nie. Możliwe wartości: true, false
authorities Urząd listy<> Nie. Lista urzędów, których potrzebuje Twoja aplikacja
authorization_user_agent AuthorizationAgent (wyliczenie) Nie. Możliwe wartości: WEBVIEW, BROWSER
http HttpConfiguration Nie. Konfigurowanie HttpUrlConnectionconnect_timeout i read_timeout
logging Konfiguracja rejestrowania Nie. Określa poziom szczegółów rejestrowania. Opcjonalne konfiguracje obejmują: pii_enabled, który przyjmuje wartość logiczną i log_level, która przyjmuje ERRORwartości , , WARNING, INFOlub VERBOSE.

client_id

Identyfikator klienta lub identyfikator aplikacji, który został utworzony podczas rejestrowania aplikacji.

redirect_uri

Identyfikator URI przekierowania zarejestrowany podczas rejestrowania aplikacji. Jeśli identyfikator URI przekierowania to aplikacja brokera, zobacz Identyfikator URI przekierowania dla publicznych aplikacji klienckich , aby upewnić się, że używasz poprawnego formatu identyfikatora URI przekierowania dla aplikacji brokera.

broker_redirect_uri_registered

Jeśli chcesz użyć uwierzytelniania obsługiwanego przez brokera, właściwość musi być ustawiona broker_redirect_uri_registered na truewartość . W scenariuszu uwierzytelniania obsługiwanego przez brokera, jeśli aplikacja nie ma poprawnego formatu, aby komunikować się z brokerem zgodnie z opisem w temacie Identyfikator URI przekierowania dla publicznych aplikacji klienckich, aplikacja weryfikuje identyfikator URI przekierowania i zgłasza wyjątek podczas uruchamiania.

Władze

Lista władz, które są znane i zaufane przez Ciebie. Oprócz wymienionych tutaj urzędów biblioteka MSAL wysyła również zapytanie do firmy Microsoft o uzyskanie listy chmur i urzędów znanych firmie Microsoft. Na tej liście urzędów określ typ urzędu i wszelkie dodatkowe parametry opcjonalne, takie jak "audience", które powinny być zgodne z odbiorcami aplikacji na podstawie rejestracji aplikacji. Poniżej przedstawiono przykładową listę urzędów:

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

Mapowanie urzędu i odbiorców firmy Microsoft na Platforma tożsamości Microsoft punktów końcowych

Typ Odbiorcy Identyfikator dzierżawy Authority_Url Wynikowy punkt końcowy Uwagi
Microsoft Entra ID AzureADandPersonalMicrosoftAccount https://login.microsoftonline.com/common common to alias dzierżawy, w którym znajduje się konto. Na przykład określona dzierżawa Firmy Microsoft lub system kont Microsoft.
Microsoft Entra ID AzureADMyOrg contoso.com https://login.microsoftonline.com/contoso.com Tylko konta obecne w contoso.com mogą uzyskać token. Wszystkie zweryfikowane domeny lub identyfikator GUID dzierżawy mogą być używane jako identyfikator dzierżawy.
Microsoft Entra ID AzureADMultipleOrgs https://login.microsoftonline.com/organizations Z tym punktem końcowym mogą być używane tylko konta Microsoft Entra. Konta Microsoft mogą być członkami organizacji. Aby uzyskać token przy użyciu konta Microsoft dla zasobu w organizacji, określ dzierżawę organizacyjną, z której chcesz uzyskać token.
Microsoft Entra ID PersonalMicrosoftAccount https://login.microsoftonline.com/consumers Tylko konta Microsoft mogą używać tego punktu końcowego.
B2C Zobacz wynikowy punkt końcowy https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ Tylko konta obecne w dzierżawie contoso.onmicrosoft.com mogą uzyskać token. W tym przykładzie zasady B2C są częścią ścieżki adresu URL urzędu.

Uwaga

Nie można włączyć i wyłączyć walidacji urzędu w usłudze MSAL. Władze są dla Ciebie znane jako deweloper określone za pośrednictwem konfiguracji lub znane firmie Microsoft za pośrednictwem metadanych. Jeśli biblioteka MSAL odbiera żądanie tokenu do nieznanego urzędu, wynik MsalClientException typu UnknownAuthority . Uwierzytelnianie obsługiwane przez brokera nie działa w przypadku usługi Azure AD B2C.

Właściwości urzędu

Właściwości Typ danych Wymagania Uwagi
type String Tak Dubluje odbiorców lub konto, które wpisze cele aplikacji. Możliwe wartości: AAD, B2C
audience Objekt Nie. Stosuje się tylko wtedy, gdy type=AAD. Określa tożsamość docelową aplikacji. Użyj wartości z rejestracji aplikacji
authority_url String Tak Wymagane tylko wtedy, gdy type=B2C. Opcjonalnie dla type=AAD. Określa adres URL urzędu lub zasady, których aplikacja powinna używać
default boolean Tak Jeden "default":true jest wymagany, gdy określono co najmniej jeden organ.

Właściwości odbiorców

Właściwości Typ danych Wymagania Uwagi
type String Tak Określa odbiorców, dla których aplikacja ma być docelowa. Możliwe wartości: AzureADandPersonalMicrosoftAccount, , PersonalMicrosoftAccount, AzureADMultipleOrgsAzureADMyOrg
tenant_id String Tak Wymagane tylko wtedy, gdy "type":"AzureADMyOrg". Opcjonalnie dla innych type wartości. Może to być domena dzierżawy, taka jak contoso.com, lub identyfikator dzierżawy, taki jak 00001111-aaaa-2222-bbbb-3333cccc4444

authorization_user_agent

Wskazuje, czy używać osadzonego widoku internetowego, czy domyślnej przeglądarki na urządzeniu podczas logowania się do konta lub autoryzowania dostępu do zasobu.

Możliwe wartości:

  • WEBVIEW: Użyj osadzonego widoku internetowego.
  • BROWSER: używa domyślnej przeglądarki na urządzeniu.

multiple_clouds_supported

W przypadku klientów obsługujących wiele chmur krajowych określ wartość true. Platforma tożsamości Microsoft następnie automatycznie przekierowuje do właściwej chmury krajowej podczas autoryzacji i realizacji tokenu. Możesz określić chmurę krajową konta zalogowanego, sprawdzając urząd skojarzony z usługą AuthenticationResult. Należy pamiętać, że element AuthenticationResult nie udostępnia adresu punktu końcowego specyficznego dla chmury krajowej zasobu, dla którego żądasz tokenu.

broker_redirect_uri_registered

Wartość logiczna wskazująca, czy używasz identyfikatora URI przekierowania brokera tożsamości firmy Microsoft zgodnego z brokerem. Ustaw wartość na false , jeśli nie chcesz używać brokera w aplikacji.

Jeśli używasz urzędu entra firmy Microsoft z grupą odbiorców ustawioną na "MicrosoftPersonalAccount"wartość , broker nie będzie używany.

http

Skonfiguruj ustawienia globalne dla limitów czasu HTTP, takich jak:

Właściwości Typ danych Wymagania Uwagi
connect_timeout int Nie. Czas w milisekundach
read_timeout int Nie. Czas w milisekundach

rejestrowanie

Do rejestrowania służą następujące ustawienia globalne:

Właściwości Typ danych Wymagania Uwagi
pii_enabled boolean Nie. Czy emitować dane osobowe
log_level string Nie Które komunikaty dziennika są rejestrowane w danych wyjściowych. Obsługiwane poziomy dzienników obejmują ERROR,INFOWARNING i VERBOSE.
logcat_enabled boolean Nie. Czy dane wyjściowe mają być rejestrowane jako element cat oprócz interfejsu rejestrowania

account_mode

Określa, ile kont można używać w aplikacji naraz. Możliwe wartości to:

  • MULTIPLE (Ustawienie domyślne)
  • SINGLE

Konstruowanie PublicClientApplication przy użyciu trybu konta, który nie jest zgodny z tym ustawieniem, spowoduje wyjątek.

Aby uzyskać więcej informacji na temat różnic między pojedynczym i wieloma kontami, zobacz Single and multiple account apps (Pojedyncze i wiele aplikacji kont).

browser_safelist

Lista dozwolonych przeglądarek, które są zgodne z biblioteką MSAL. Te przeglądarki prawidłowo obsługują przekierowania do intencji niestandardowych. Możesz dodać do tej listy. Wartość domyślna jest dostępna w konfiguracji domyślnej pokazanej poniżej. ``

Domyślny plik konfiguracji biblioteki MSAL

Poniżej przedstawiono domyślną konfigurację biblioteki MSAL dostarczaną z biblioteką MSAL. Najnowszą wersję można zobaczyć w witrynie GitHub.

Ta konfiguracja jest uzupełniana przez podane wartości. Podane wartości zastępują wartości domyślne.

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

Przykładowa podstawowa konfiguracja

W poniższym przykładzie przedstawiono podstawową konfigurację określającą identyfikator klienta, identyfikator URI przekierowania, informację o tym, czy zarejestrowano przekierowanie brokera, oraz listę urzędów.

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

Jak używać pliku konfiguracji

  1. Utwórz plik konfiguracji. Zalecamy utworzenie niestandardowego pliku konfiguracji w programie res/raw/auth_config.json. Ale możesz umieścić go w dowolnym miejscu, którego chcesz.

  2. Poinformuj bibliotekę MSAL, gdzie szukać konfiguracji podczas konstruowania elementu PublicClientApplication. Na przykład:

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