Kurz: Volání rozhraní Microsoft Graph API z aplikace Univerzální platforma Windows (UPW)

V tomto kurzu vytvoříte nativní aplikaci Univerzální platforma Windows (UPW), která přihlásí uživatele a získá přístupový token pro volání rozhraní Microsoft Graph API.

Na konci této příručky vaše aplikace volá chráněné rozhraní API pomocí osobních účtů. Příklady jsou outlook.com, live.com a další. Vaše aplikace také volá pracovní a školní účty z libovolné společnosti nebo organizace, která má ID Microsoft Entra.

V tomto kurzu:

  • Vytvoření projektu Univerzální platforma Windows (UPW) v sadě Visual Studio
  • Registrace aplikace na webu Azure Portal
  • Přidání kódu pro podporu přihlášení a odhlášení uživatele
  • Přidání kódu pro volání rozhraní Microsoft Graph API
  • Otestování aplikace

Požadavky

Jak funguje tento průvodce

Shows how the sample app generated by this tutorial works

Tato příručka vytvoří ukázkovou aplikaci pro UPW, která se dotazuje rozhraní Microsoft Graph API. V tomto scénáři se token přidá do požadavků HTTP pomocí autorizační hlavičky. Microsoft Authentication Library zpracovává získání a obnovení tokenů.

Balíčky NuGet

Tato příručka používá následující balíček NuGet:

Knihovna Popis
Microsoft.Identity.Client Microsoft Authentication Library
Microsoft.Graph Klientská knihovna Microsoft Graphu

Nastavení projektu

Tato část obsahuje podrobné pokyny k integraci desktopové aplikace .NET (XAML) windows s přihlášením s Microsoftem. Aplikace pak může dotazovat webová rozhraní API, která vyžadují token, například rozhraní Microsoft Graph API.

Tato příručka vytvoří aplikaci, která zobrazí tlačítko, které se dotazuje rozhraní Microsoft Graph API a tlačítko pro odhlášení. Zobrazí se také textová pole, která obsahují výsledky volání.

Tip

Pokud chcete zobrazit dokončenou verzi projektu, který vytvoříte v tomto kurzu, můžete si ho stáhnout z GitHubu.

Vytvořte si svoji aplikaci

  1. Otevřete Visual Studio a vyberte Vytvořit nový projekt.

  2. V části Vytvořit nový projekt zvolte Prázdnou aplikaci (Univerzální windows) pro C# a vyberte Další.

  3. V části Konfigurace nového projektu pojmenujte aplikaci a vyberte Vytvořit.

  4. Pokud se zobrazí výzva, v aplikaci Nový Univerzální platforma Windows Project vyberte libovolnou verzi pro cílové a minimální verze a vyberte OK.

    Minimum and Target versions

Přidání knihovny Microsoft Authentication Library do projektu

  1. V aplikaci Visual Studio zvolte Nástroje>Správce balíčků NuGet>Konzola Správce balíčků.

  2. Zkopírujte a vložte do okna konzoly Správce balíčků následující příkazy:

    Install-Package Microsoft.Identity.Client
    Install-Package Microsoft.Graph
    

    Poznámka:

    První příkaz nainstaluje knihovnu Microsoft Authentication Library (MSAL.NET). MSAL.NET získává, ukládá do mezipaměti a aktualizuje tokeny uživatelů, které přistupují k rozhraním API, která jsou chráněná platformou Microsoft Identity Platform. Druhý příkaz nainstaluje klientskou knihovnu Microsoft Graph .NET k ověření požadavků na Microsoft Graph a volání služby.

Vytvoření uživatelského rozhraní aplikace

Visual Studio vytvoří MainPage.xaml jako součást šablony projektu. Otevřete tento soubor a pak nahraďte uzel Grid vaší aplikace následujícím kódem:

<Grid>
    <StackPanel Background="Azure">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
            <Button x:Name="CallGraphButton" Content="Call Microsoft Graph API" HorizontalAlignment="Right" Padding="5" Click="CallGraphButton_Click" Margin="5" FontFamily="Segoe Ui"/>
            <Button x:Name="SignOutButton" Content="Sign-Out" HorizontalAlignment="Right" Padding="5" Click="SignOutButton_Click" Margin="5" Visibility="Collapsed" FontFamily="Segoe Ui"/>
        </StackPanel>
        <TextBlock Text="API Call Results" Margin="2,0,0,-5" FontFamily="Segoe Ui" />
        <TextBox x:Name="ResultText" TextWrapping="Wrap" MinHeight="120" Margin="5" FontFamily="Segoe Ui"/>
        <TextBlock Text="Token Info" Margin="2,0,0,-5" FontFamily="Segoe Ui" />
        <TextBox x:Name="TokenInfoText" TextWrapping="Wrap" MinHeight="70" Margin="5" FontFamily="Segoe Ui"/>
    </StackPanel>
</Grid>

Získání tokenu pro rozhraní Microsoft Graph API pomocí knihovny Microsoft Authentication Library

Tato část ukazuje, jak pomocí knihovny Microsoft Authentication Library získat token pro rozhraní Microsoft Graph API. Proveďte změny v souboru MainPage.xaml.cs .

  1. V souboru MainPage.xaml.cs přidejte následující odkazy:

    using Microsoft.Identity.Client;
    using Microsoft.Graph;
    using Microsoft.Graph.Models;
    using System.Diagnostics;
    using System.Threading.Tasks;
    using System.Net.Http.Headers;
    
  2. Nahraďte třídu MainPage následujícím kódem:

    public sealed partial class MainPage : Page
    {
    
        //Set the scope for API call to user.read
        private string[] scopes = new string[] { "user.read" };
    
        // Below are the clientId (Application Id) of your app registration and the tenant information.
        // You have to replace:
        // - the content of ClientID with the Application Id for your app registration
        private const string ClientId = "[Application Id pasted from the application registration portal]";
    
        private const string Tenant = "common"; // Alternatively "[Enter your tenant, as obtained from the Azure portal, e.g. kko365.onmicrosoft.com]"
        private const string Authority = "https://login.microsoftonline.com/" + Tenant;
    
        // The MSAL Public client app
        private static IPublicClientApplication PublicClientApp;
    
        private static string MSGraphURL = "https://graph.microsoft.com/v1.0/";
        private static AuthenticationResult authResult;
    
        public MainPage()
        {
            this.InitializeComponent();
        }
    
        /// <summary>
        /// Call AcquireTokenAsync - to acquire a token requiring user to sign in
        /// </summary>
        private async void CallGraphButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                // Sign in user using MSAL and obtain an access token for Microsoft Graph
                GraphServiceClient graphClient = await SignInAndInitializeGraphServiceClient(scopes);
    
                // Call the /me endpoint of Graph
                User graphUser = await graphClient.Me.GetAsync();
    
                // Go back to the UI thread to make changes to the UI
                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    ResultText.Text = "Display Name: " + graphUser.DisplayName + "\nBusiness Phone: " + graphUser.BusinessPhones.FirstOrDefault()
                                      + "\nGiven Name: " + graphUser.GivenName + "\nid: " + graphUser.Id
                                      + "\nUser Principal Name: " + graphUser.UserPrincipalName;
                    DisplayBasicTokenInfo(authResult);
                    this.SignOutButton.Visibility = Visibility.Visible;
                });
            }
            catch (MsalException msalEx)
            {
                await DisplayMessageAsync($"Error Acquiring Token:{System.Environment.NewLine}{msalEx}");
            }
            catch (Exception ex)
            {
                await DisplayMessageAsync($"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}");
                return;
            }
        }
                /// <summary>
        /// Signs in the user and obtains an access token for Microsoft Graph
        /// </summary>
        /// <param name="scopes"></param>
        /// <returns> Access Token</returns>
        private static async Task<string> SignInUserAndGetTokenUsingMSAL(string[] scopes)
        {
            // Initialize the MSAL library by building a public client application
            PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
                .WithAuthority(Authority)
                .WithUseCorporateNetwork(false)
                .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
                 .WithLogging((level, message, containsPii) =>
                 {
                     Debug.WriteLine($"MSAL: {level} {message} ");
                 }, LogLevel.Warning, enablePiiLogging: false, enableDefaultPlatformLogging: true)
                .Build();
    
            // It's good practice to not do work on the UI thread, so use ConfigureAwait(false) whenever possible.
            IEnumerable<IAccount> accounts = await PublicClientApp.GetAccountsAsync().ConfigureAwait(false);
            IAccount firstAccount = accounts.FirstOrDefault();
    
            try
            {
                authResult = await PublicClientApp.AcquireTokenSilent(scopes, firstAccount)
                                                  .ExecuteAsync();
            }
            catch (MsalUiRequiredException ex)
            {
                // A MsalUiRequiredException happened on AcquireTokenSilentAsync. This indicates you need to call AcquireTokenAsync to acquire a token
                Debug.WriteLine($"MsalUiRequiredException: {ex.Message}");
    
                authResult = await PublicClientApp.AcquireTokenInteractive(scopes)
                                                  .ExecuteAsync()
                                                  .ConfigureAwait(false);
    
            }
            return authResult.AccessToken;
        }
    }
    

Interaktivní získání tokenu uživatele

Výsledkem AcquireTokenInteractive metody je okno s výzvou k přihlášení uživatelů. Aplikace obvykle vyžadují, aby se uživatelé při prvním přístupu k chráněnému prostředku přihlásili interaktivně. Při neúspěšném získání tokenu se můžou také muset přihlásit. Příkladem je vypršení platnosti hesla uživatele.

Získání tokenu uživatele bez upozornění

Metoda AcquireTokenSilent zpracovává získání a obnovení tokenů bez zásahu uživatele. Po AcquireTokenInteractive prvním spuštění se uživateli zobrazí výzva k zadání přihlašovacích údajů, použijte metodu AcquireTokenSilent k vyžádání tokenů pro pozdější volání. Tato metoda získá tokeny bezobslužně. Microsoft Authentication Library zpracovává mezipaměť tokenů a obnovení.

Nakonec metoda AcquireTokenSilent selže. Mezi důvody selhání patří uživatel, který se odhlásil nebo změnil heslo na jiném zařízení. Když Microsoft Authentication Library zjistí, že problém vyžaduje interaktivní akci, vyvolá MsalUiRequiredException výjimku. Vaše aplikace může tuto výjimku zpracovat dvěma způsoby:

  • Vaše aplikace volá AcquireTokenInteractive okamžitě. Výsledkem tohoto volání je výzva, aby se uživatel přihlásil. Tento přístup obvykle používejte pro online aplikace, u kterých není k dispozici offline obsah pro uživatele. Ukázka vygenerovaná tímto nastavením s asistencí se řídí vzorem. Při prvním spuštění ukázky se zobrazí v akci.

    Vzhledem k tomu, že aplikace nepoužil žádný uživatel, accounts.FirstOrDefault() obsahuje hodnotu null a vyvolá MsalUiRequiredException výjimku.

    Kód v ukázce pak zpracuje výjimku voláním AcquireTokenInteractive. Výsledkem tohoto volání je výzva, aby se uživatel přihlásil.

  • Aplikace zobrazí uživatelům vizuální označení, že se potřebují přihlásit. Pak můžou vybrat správný čas pro přihlášení. Aplikace se může opakovat AcquireTokenSilent později. Tento přístup použijte, když uživatelé můžou bez přerušení používat jiné funkce aplikace. Příkladem je, když je v aplikaci k dispozici offline obsah. V takovém případě se uživatelé můžou rozhodnout, kdy se chtějí přihlásit. Aplikace se může po dočasné nedostupnosti sítě opakovat AcquireTokenSilent .

Vytvoření instance klienta služby Microsoft Graph získáním tokenu z metody SignInUserAndGetTokenUsingMSAL

V projektu vytvořte nový soubor s názvem TokenProvider.cs: Klikněte pravým tlačítkem myši na projekt a vyberte Přidat>novou prázdnou stránku položky.>

Do nově vytvořeného souboru přidejte následující kód:

using Microsoft.Kiota.Abstractions.Authentication;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace UWP_app_MSGraph {
    public class TokenProvider : IAccessTokenProvider {
        private Func<string[], Task<string>> getTokenDelegate;
        private string[] scopes;

        public TokenProvider(Func<string[], Task<string>> getTokenDelegate, string[] scopes) {
            this.getTokenDelegate = getTokenDelegate;
            this.scopes = scopes;
        }

        public Task<string> GetAuthorizationTokenAsync(Uri uri, Dictionary<string, object> additionalAuthenticationContext = default,
            CancellationToken cancellationToken = default) {
            return getTokenDelegate(scopes);
        }

        public AllowedHostsValidator AllowedHostsValidator { get; }
    }
}

Tip

Po vložení kódu se ujistěte, že obor názvů v souboru TokenProvider.cs odpovídá oboru názvů projektu. To vám umožní snadněji odkazovat na TokenProvider třídu v projektu.

Třída TokenProvider definuje vlastního zprostředkovatele přístupového tokenu, který spustí zadanou metodu delegáta pro získání a vrácení přístupového tokenu.

Do souboru MainPage.xaml.cs přidejte následující novou metodu:

      /// <summary>
     /// Sign in user using MSAL and obtain a token for Microsoft Graph
     /// </summary>
     /// <returns>GraphServiceClient</returns>
     private async static Task<GraphServiceClient> SignInAndInitializeGraphServiceClient(string[] scopes)
     {
         var tokenProvider = new TokenProvider(SignInUserAndGetTokenUsingMSAL, scopes);
         var authProvider = new BaseBearerTokenAuthenticationProvider(tokenProvider);
         var graphClient = new GraphServiceClient(authProvider, MSGraphURL);

         return await Task.FromResult(graphClient);
     }

V této metodě používáte zprostředkovatele TokenProvider vlastního přístupového tokenu k připojení SignInUserAndGetTokenUsingMSAL metody k sadě Microsoft Graph .NET SDK a vytvoření ověřeného klienta.

Chcete-li použít BaseBearerTokenAuthenticationProvider, v souboru MainPage.xaml.cs přidejte následující odkaz:

using Microsoft.Kiota.Abstractions.Authentication;

Další informace o volání REST proti chráněnému rozhraní API

V této ukázkové aplikaci vytvoří GetGraphServiceClient metoda instanci GraphServiceClient pomocí přístupového tokenu. GraphServiceClient Pak se použije k získání informací o profilu uživatele z koncového bodu me.

Přidání metody pro odhlášení uživatele

Pokud se chcete odhlásit uživatele, přidejte do souboru MainPage.xaml.cs následující metodu:

/// <summary>
/// Sign out the current user
/// </summary>
private async void SignOutButton_Click(object sender, RoutedEventArgs e)
{
    IEnumerable<IAccount> accounts = await PublicClientApp.GetAccountsAsync().ConfigureAwait(false);
    IAccount firstAccount = accounts.FirstOrDefault();

    try
    {
        await PublicClientApp.RemoveAsync(firstAccount).ConfigureAwait(false);
        await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
        {
            ResultText.Text = "User has signed out";
            this.CallGraphButton.Visibility = Visibility.Visible;
                this.SignOutButton.Visibility = Visibility.Collapsed;
            });
        }
        catch (MsalException ex)
        {
            ResultText.Text = $"Error signing out user: {ex.Message}";
        }
    }

MSAL.NET používá asynchronní metody k získání tokenů nebo manipulaci s účty. Proto podporují akce uživatelského rozhraní ve vlákně uživatelského rozhraní. To je důvod volání Dispatcher.RunAsync a opatření k volání ConfigureAwait(false).

Další informace o odhlášení

Metoda SignOutButton_Click odebere uživatele z mezipaměti uživatele Microsoft Authentication Library. Tato metoda efektivně říká knihovně Microsoft Authentication Library, aby zapomněla aktuálního uživatele. Budoucí požadavek na získání tokenu bude úspěšný pouze v případě, že je interaktivní.

Aplikace v této ukázce podporuje jednoho uživatele. Microsoft Authentication Library podporuje scénáře, kdy se uživatel může přihlásit k více účtům. Příkladem je e-mailová aplikace, ve které má uživatel několik účtů.

Zobrazení základních informací o tokenu

Přidejte následující metodu do Souboru MainPage.xaml.cs pro zobrazení základních informací o tokenu:

/// <summary>
/// Display basic information contained in the token. Needs to be called from the UI thread.
/// </summary>
private void DisplayBasicTokenInfo(AuthenticationResult authResult)
{
    TokenInfoText.Text = "";
    if (authResult != null)
    {
        TokenInfoText.Text += $"User Name: {authResult.Account.Username}" + Environment.NewLine;
        TokenInfoText.Text += $"Token Expires: {authResult.ExpiresOn.ToLocalTime()}" + Environment.NewLine;
    }
}

Další informace

Tokeny ID získané pomocí OpenID Připojení obsahují také malou podmnožinu informací, které se týkají uživatele. DisplayBasicTokenInfo zobrazí základní informace obsažené v tokenu. Tyto informace zahrnují zobrazované jméno a ID uživatele. Zahrnuje také datum vypršení platnosti tokenu a řetězec, který představuje samotný přístupový token. Pokud několikrát vyberete tlačítko Volat rozhraní Microsoft Graph API , uvidíte, že se stejný token znovu použil pro pozdější žádosti. Můžete se také podívat na datum vypršení platnosti rozšířené, když knihovna Microsoft Authentication Library rozhodne, že je čas token obnovit.

Zobrazit zprávu

Do souboru MainPage.xaml.cs přidejte následující novou metodu:

/// <summary>
/// Displays a message in the ResultText. Can be called from any thread.
/// </summary>
private async Task DisplayMessageAsync(string message)
{
     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
         () =>
         {
             ResultText.Text = message;
         });
     }

Registrace aplikace

Tip

Postup v tomto článku se může mírně lišit v závislosti na portálu, od který začínáte.

Teď zaregistrujte aplikaci:

  1. Přihlaste se do Centra pro správu Microsoft Entra jako alespoň vývojář aplikací.
  2. Pokud máte přístup k více tenantům, pomocí ikony Nastavení v horní nabídce přepněte na tenanta, ve kterém chcete aplikaci zaregistrovat z nabídky Adresáře a předplatná.
  3. Přejděte k aplikacím> identit>Registrace aplikací.
  4. Vyberte Nová registrace.
  5. Zadejte název aplikace, například UWP-App-calling-MSGraph. Uživatelé vaší aplikace můžou vidět tento název a později ho můžete změnit.
  6. V části Podporované typy účtů vyberte Účty v libovolném adresáři organizace (libovolný adresář Microsoft Entra – Víceklient) a osobní účty Microsoft (např. Skype, Xbox).
  7. Vyberte Zaregistrovat.
  8. Na stránce přehledu vyhledejte hodnotu ID aplikace (klienta) a zkopírujte ji. Vraťte se do sady Visual Studio, otevřete MainPage.xaml.cs a nahraďte hodnotu ClientId touto hodnotou.

Konfigurace ověřování pro vaši aplikaci:

  1. V Centru pro správu Microsoft Entra vyberte Možnost Přidat platformu a>pak vyberte Mobilní a desktopové aplikace.
  2. V části Identifikátory URI pro přesměrování zadejte https://login.microsoftonline.com/common/oauth2/nativeclient.
  3. Vyberte Konfigurovat.

Konfigurace oprávnění rozhraní API pro vaši aplikaci:

  1. Vyberte Oprávnění rozhraní API>Přidat oprávnění.
  2. Vyberte Microsoft Graph.
  3. Vyberte Delegovaná oprávnění, vyhledejte User.Read a ověřte, že je vybraná možnost User.Read .
  4. Pokud jste provedli nějaké změny, vyberte Přidat oprávnění a uložte je.

Povolení integrovaného ověřování ve federovaných doménách (volitelné)

Pokud chcete povolit integrované ověřování systému Windows při použití s federovanou doménou Microsoft Entra, musí manifest aplikace povolit další možnosti. Vraťte se do aplikace v sadě Visual Studio.

  1. Otevřete Package.appxmanifest.

  2. Vyberte Možnosti a povolte následující nastavení:

    • Podnikové ověřování
    • Privátní sítě (klient &server)
    • Sdílené uživatelské certifikáty

Důležité

Integrované ověřování systému Windows není pro tuto ukázku ve výchozím nastavení nakonfigurované. Aplikace, které vyžadují Enterprise Authentication nebo Shared User Certificates mají možnosti, vyžadují vyšší úroveň ověřování ve Windows Storu. Ne všichni vývojáři také chtějí provést vyšší úroveň ověřování. Toto nastavení povolte jenom v případě, že potřebujete integrované ověřování systému Windows s federovanou doménou Microsoft Entra.

Alternativní přístup k používání withDefaultRedirectURI()

V aktuální ukázce se WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient") použije metoda. Chcete-li použít WithDefaultRedirectURI(), proveďte následující kroky:

  1. V souboru MainPage.XAML.cs nahraďte WithRedirectUri :WithDefaultRedirectUri

    Aktuální kód

    
    PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
        .WithAuthority(Authority)
        .WithUseCorporateNetwork(false)
        .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
        .WithLogging((level, message, containsPii) =>
         {
             Debug.WriteLine($"MSAL: {level} {message} ");
         }, LogLevel.Warning, enablePiiLogging: false, enableDefaultPlatformLogging: true)
        .Build();
    
    

    Aktualizovaný kód

    
    PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
        .WithAuthority("https://login.microsoftonline.com/common")
        .WithUseCorporateNetwork(false)
        .WithDefaultRedirectUri()
        .WithLogging((level, message, containsPii) =>
         {
             Debug.WriteLine($"MSAL: {level} {message} ");
         }, LogLevel.Warning, enablePiiLogging: false, enableDefaultPlatformLogging: true)
        .Build();
    
  2. Vyhledejte identifikátor URI zpětného volání pro vaši aplikaci tak, že do souboru MainPage.xaml.cs přidáte redirectURI pole a nastavíte na ni zarážku:

    
    public sealed partial class MainPage : Page
    {
            ...
    
            string redirectURI = Windows.Security.Authentication.Web.WebAuthenticationBroker
                                .GetCurrentApplicationCallbackUri().ToString();
            public MainPage()
            {
                ...
            }
           ...
    }
    
    

    Spusťte aplikaci a zkopírujte hodnotu redirectUri , kdy se zarážka dosáhne. Hodnota by měla vypadat podobně jako následující hodnota: ms-app://s-1-15-2-1352796503-54529114-405753024-3540103335-3203256200-511895534-1429095407/

    Řádek kódu pak můžete odebrat, protože se vyžaduje jenom jednou, abyste mohli načíst hodnotu.

  3. V Centru pro správu Microsoft Entra přidejte vrácenou hodnotu v identifikátoru RedirectUri v podokně Ověřování.

Testování kódu

Pokud chcete aplikaci otestovat, vyberte klávesu F5 a spusťte projekt v sadě Visual Studio. Zobrazí se hlavní okno:

Application's user interface

Až budete připraveni k testování, vyberte Volat rozhraní Microsoft Graph API. Pak se přihlaste pomocí účtu organizace Microsoft Entra nebo účtu Microsoft, například live.com nebo outlook.com. Při prvním spuštění tohoto testu zobrazí aplikace okno s výzvou, aby se uživatel přihlásil.

Při prvním přihlášení k aplikaci se zobrazí obrazovka souhlasu podobná následujícímu obrázku. Pokud chcete explicitně udělit souhlas s přístupem, vyberte ano :

Access consent screen

Očekávané výsledky

Informace o profilu uživatele vrácené voláním rozhraní Microsoft Graph API se zobrazí na obrazovce Výsledky volání rozhraní API:

API Call Results screen

Zobrazí se také základní informace o tokenu získaném prostřednictvím AcquireTokenInteractive nebo AcquireTokenSilent v poli Informace o tokenu:

Vlastnost Formát Popis
Username user@domain.com Uživatelské jméno, které uživatele identifikuje.
Token Expires DateTime Čas vypršení platnosti tokenu. Knihovna Microsoft Authentication Library prodlužuje datum vypršení platnosti obnovením tokenu podle potřeby.

Další informace o oborech a delegovaných oprávněních

Rozhraní Microsoft Graph API vyžaduje user.read obor pro čtení profilu uživatele. Tento obor se ve výchozím nastavení přidá do každé aplikace, která je zaregistrovaná na portálu pro registraci aplikací. Další rozhraní API pro Microsoft Graph a vlastní rozhraní API pro back-endový server můžou vyžadovat další obory. Rozhraní Microsoft Graph API například vyžaduje Calendars.Read obor pro výpis kalendářů uživatele.

Pokud chcete získat přístup ke kalendářům uživatele v kontextu aplikace, přidejte Calendars.Read delegovaná oprávnění k informacím o registraci aplikace. Pak do volání přidejte Calendars.Read obor acquireTokenSilent .

Uživatelům se může zobrazit výzva k zadání dalších souhlasů, když zvýšíte počet oborů.

Známé problémy

Problém 1

Při přihlášení k aplikaci ve federované doméně Microsoft Entra se zobrazí jedna z následujících chybových zpráv:

  • V požadavku nebyl nalezen platný klientský certifikát.
  • V úložišti certifikátů uživatele se nenašly žádné platné certifikáty.
  • "Zkuste znovu zvolit jinou metodu ověřování."

Příčina: Možnosti podnikového a certifikátu nejsou povolené.

Řešení: Postupujte podle kroků v části Povolení integrovaného ověřování ve federovaných doménách (volitelné).

Problém 2

V federovaných doménách povolíte integrované ověřování a pokusíte se pomocí Windows Hello na počítači s Windows 10 přihlásit k prostředí s nakonfigurovaným vícefaktorovým ověřováním. Zobrazí se seznam certifikátů. Pokud se rozhodnete použít pin kód, okno PIN se nikdy nezobrazí.

Příčina: Tento problém je známým omezením zprostředkovatele webového ověřování v aplikacích UPW, které běží na stolních počítačích s Windows 10. Funguje dobře ve Windows 10 Mobile.

Alternativní řešení: Vyberte Přihlásit se s dalšími možnostmi. Pak vyberte Přihlásit se pomocí uživatelského jména a hesla. Vyberte Zadat heslo. Pak projděte proces ověřování telefonem.

Nápověda a podpora

Pokud potřebujete pomoc, chcete nahlásit problém nebo se chcete dozvědět o možnostech podpory, přečtěte si nápovědu a podporu pro vývojáře.

Další kroky

Přečtěte si další informace o používání knihovny MSAL (Microsoft Authentication Library) pro autorizaci a ověřování v aplikacích .NET: