Oktatóanyag: A Microsoft Graph API meghívása egy Univerzális Windows-platform (UWP) alkalmazásból

Ebben az oktatóanyagban létrehoz egy natív Univerzális Windows-platform (UWP) alkalmazást, amely bejelentkezik a felhasználókba, és hozzáférési jogkivonatot kap a Microsoft Graph API meghívásához.

Az útmutató végén az alkalmazás személyes fiókok használatával meghív egy védett API-t. Ilyenek például a outlook.com, a live.com és a többi. Az alkalmazás munkahelyi és iskolai fiókokat is meghív bármely olyan vállalattól vagy szervezettől, amely Rendelkezik Microsoft Entra-azonosítóval.

Ebben az oktatóanyagban:

  • Univerzális Windows-platform (UWP) projekt létrehozása a Visual Studióban
  • Az alkalmazás regisztrálása az Azure Portalon
  • Kód hozzáadása a felhasználói bejelentkezés és kijelentkezés támogatásához
  • Kód hozzáadása a Microsoft Graph API meghívásához
  • Az alkalmazás tesztelése

Előfeltételek

Az útmutató működése

Shows how the sample app generated by this tutorial works

Ez az útmutató létrehoz egy minta UWP-alkalmazást, amely lekérdezi a Microsoft Graph API-t. Ebben a forgatókönyvben az Engedélyezési fejléc használatával jogkivonatot ad hozzá a HTTP-kérésekhez. A Microsoft Authentication Library kezeli a jogkivonatok beszerzését és megújítását.

NuGet-csomagok

Ez az útmutató a következő NuGet-csomagot használja:

Könyvtár Leírás
Microsoft.Identity.Client Microsoft hitelesítési könyvtár
Microsoft.Graph Microsoft Graph ügyféloldali kódtár

A projekt beállítása

Ez a szakasz részletes útmutatást nyújt egy Windows Desktop .NET-alkalmazás (XAML) microsoftos bejelentkezéssel való integrálásához. Ezután az alkalmazás lekérdezheti a jogkivonatot igénylő webes API-kat, például a Microsoft Graph API-t.

Ez az útmutató létrehoz egy alkalmazást, amely megjelenít egy gombot, amely lekérdezi a Microsoft Graph API-t, és egy gombot a kijelentkezéshez. A hívások eredményeit tartalmazó szövegmezőket is megjeleníti.

Az alkalmazás létrehozása

  1. Nyissa meg a Visual Studiót, és válassza az Új projekt létrehozása lehetőséget.

  2. Új projekt létrehozásakor válassza az Üres alkalmazás (Univerzális Windows) lehetőséget a C# számára, és válassza a Tovább gombot.

  3. Az új projekt konfigurálásához nevezze el az alkalmazást, és válassza a Létrehozás lehetőséget.

  4. Ha a rendszer kéri, az Új Univerzális Windows-platform projektben válassza ki a Cél és a Minimális verzió bármelyik verzióját, majd kattintson az OK gombra.

    Minimum and Target versions

A Microsoft Authentication Library hozzáadása a projekthez

  1. A Visual Studióban válassza a Tools (Eszközök) >NuGet Package Manager (NuGet-csomagkezelő)>Package Manager Console (Csomagkezelő konzol) elemet.

  2. Másolja és illessze be a következő parancsokat a Csomagkezelő konzolablakba:

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

    Megjegyzés:

    Az első parancs telepíti a Microsoft Authentication Libraryt (MSAL.NET). MSAL.NET a Microsoft Identitásplatform által védett API-khoz hozzáférő felhasználói jogkivonatokat szerez be, gyorsítótáraz és frissít. A második parancs telepíti a Microsoft Graph .NET ügyfélkódtárat a Microsoft Graph felé irányuló kérések hitelesítéséhez és a szolgáltatáshoz való hívások indításához.

Az alkalmazás felhasználói felületének létrehozása

A Visual Studio létrehozza a MainPage.xaml fájlt a projektsablon részeként. Nyissa meg ezt a fájlt, majd cserélje le az alkalmazás Rács csomópontját a következő kódra:

<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>

Jogkivonat beszerzése a Microsoft Graph API-hoz a Microsoft Authentication Library használatával

Ez a szakasz bemutatja, hogyan szerezhet be jogkivonatot a Microsoft Graph API-hoz a Microsoft Authentication Library használatával. Módosítsa a MainPage.xaml.cs fájlt.

  1. A MainPage.xaml.cs fájlban adja hozzá a következő hivatkozásokat:

    using Microsoft.Identity.Client;
    using Microsoft.Graph;
    using Microsoft.Graph.Models;
    using System.Diagnostics;
    using System.Threading.Tasks;
    using System.Net.Http.Headers;
    
  2. Cserélje le az osztályt MainPage a következő kódra:

    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;
        }
    }
    

Felhasználói jogkivonat interaktív lekérése

A AcquireTokenInteractive metódus egy ablakot eredményez, amely arra kéri a felhasználókat, hogy jelentkezzenek be. Az alkalmazások általában megkövetelik, hogy a felhasználók először interaktívan jelentkezzenek be egy védett erőforrás eléréséhez. Előfordulhat, hogy be kell jelentkezniük, ha egy jogkivonat beszerzésére irányuló csendes művelet meghiúsul. Ilyen például, ha egy felhasználó jelszava lejárt.

Felhasználói jogkivonat csendes beszerzése

A AcquireTokenSilent metódus felhasználói beavatkozás nélkül kezeli a jogkivonatok beszerzését és megújítását. Az első futtatás és a felhasználó hitelesítő adatainak lekérése után AcquireTokenInteractive használja a AcquireTokenSilent metódust a jogkivonatok lekérésére a későbbi hívásokhoz. Ez a metódus csendben szerzi be a jogkivonatokat. A Microsoft Authentication Library kezeli a tokengyorsítótárat és a megújítást.

Végül a AcquireTokenSilent metódus meghiúsul. A hiba okai közé tartozik az a felhasználó, aki kijelentkezett vagy módosította a jelszavát egy másik eszközön. Ha a Microsoft Hitelesítési kódtár azt észleli, hogy a probléma interaktív műveletet igényel, kivételt MsalUiRequiredException jelent. Az alkalmazás kétféleképpen tudja kezelni ezt a kivételt:

  • Az alkalmazás azonnal hív AcquireTokenInteractive . Ez a hívás arra kéri a felhasználót, hogy jelentkezzen be. Ezt a módszert általában olyan online alkalmazásokhoz használja, ahol nincs elérhető offline tartalom a felhasználó számára. Az irányított beállítás által létrehozott minta a mintát követi. A minta első futtatásakor működés közben jelenik meg.

    Mivel egyetlen felhasználó sem használta az alkalmazást, accounts.FirstOrDefault() null értéket tartalmaz, és kivételt MsalUiRequiredException jelez.

    A mintában szereplő kód ezután hívással AcquireTokenInteractivekezeli a kivételt. Ez a hívás arra kéri a felhasználót, hogy jelentkezzen be.

  • Az alkalmazás vizuális jelzést jelenít meg a felhasználóknak, hogy be kell jelentkezniük. Ezután kiválaszthatják a megfelelő időpontot a bejelentkezéshez. Az alkalmazás később újra próbálkozhat AcquireTokenSilent . Ezt a módszert akkor használja, ha a felhasználók más alkalmazásfunkciót is használhatnak megszakítás nélkül. Ilyen például, ha offline tartalom érhető el az alkalmazásban. Ebben az esetben a felhasználók eldönthetik, hogy mikor szeretnének bejelentkezni. Az alkalmazás újra próbálkozhat AcquireTokenSilent , miután a hálózat átmenetileg nem volt elérhető.

A Microsoft Graph Service-ügyfél példányosítása a token a SignInUserAndGetTokenUsingMSAL metódusból való lekérésével

A projektben hozzon létre egy TokenProvider.cs nevű új fájlt: kattintson a jobb gombbal a projektre, és válassza az Új elem>hozzáadása>üres lap lehetőséget.

Adja hozzá az újonnan létrehozott fájlhoz a következő kódot:

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; }
    }
}

Tipp.

A kód beillesztése után győződjön meg arról, hogy a TokenProvider.cs fájl névtere megegyezik a projekt névterével. Így könnyebben hivatkozhat a TokenProvider projekt osztályára.

Az TokenProvider osztály meghatároz egy egyéni hozzáférési jogkivonat-szolgáltatót, amely végrehajtja a megadott delegálási módszert egy hozzáférési jogkivonat lekéréséhez és visszaadásához.

Adja hozzá a következő új metódust a MainPage.xaml.cs fájlhoz:

      /// <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);
     }

Ebben a módszerben az egyéni hozzáférési jogkivonat-szolgáltatóval TokenProvider csatlakoztatja a SignInUserAndGetTokenUsingMSAL metódust a Microsoft Graph .NET SDK-hoz, és létrehoz egy hitelesített ügyfelet.

A MainPage.xaml.cs fájlban használja a BaseBearerTokenAuthenticationProviderkövetkező hivatkozást:

using Microsoft.Kiota.Abstractions.Authentication;

További információ a REST-hívások védett API-k ellen történő indításáról

Ebben a mintaalkalmazásban a GetGraphServiceClient metódus egy hozzáférési jogkivonat használatával példányosít GraphServiceClient . GraphServiceClient Ezután lekérheti a felhasználó profiladatait a me végpontról.

Metódus hozzáadása a felhasználó kijelentkezéséhez

A felhasználó kijelentkezéséhez adja hozzá a következő metódust a MainPage.xaml.cs fájlhoz:

/// <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 aszinkron metódusokat használ jogkivonatok beszerzéséhez vagy fiókok kezeléséhez. Így a felhasználói felületi műveletek támogatása a felhasználói felületen. Ez az oka a Dispatcher.RunAsync hívásnak és a híváshoz ConfigureAwait(false)szükséges óvintézkedéseknek.

További információ a kijelentkezésről

A SignOutButton_Click metódus eltávolítja a felhasználót a Microsoft Authentication Library felhasználói gyorsítótárából. Ez a módszer hatékonyan utasítja a Microsoft Authentication Library-t, hogy felejtse el az aktuális felhasználót. A jogkivonat beszerzésére vonatkozó jövőbeli kérés csak akkor sikeres, ha interaktív.

A mintában szereplő alkalmazás egyetlen felhasználót támogat. A Microsoft Authentication Library olyan forgatókönyveket támogat, ahol a felhasználó több fiókba is bejelentkezhet. Ilyen például egy e-mail-alkalmazás, amelyben egy felhasználó több fiókkal rendelkezik.

Alapszintű jogkivonat-információk megjelenítése

Adja hozzá a következő metódust a MainPage.xaml.cs fájlhoz a jogkivonat alapvető információinak megjelenítéséhez:

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

További információ

Az OpenID Csatlakozás használatával beszerzett azonosító jogkivonatok a felhasználóra vonatkozó információk egy kis részét is tartalmazzák. DisplayBasicTokenInfo A jogkivonatban található alapvető információkat jeleníti meg. Ezek az információk tartalmazzák a felhasználó megjelenítendő nevét és azonosítóját. Tartalmazza a jogkivonat lejárati dátumát és magát a hozzáférési jogkivonatot jelképező sztringet is. Ha többször is kiválasztja a Microsoft Graph API meghívása gombot, látni fogja, hogy ugyanazt a jogkivonatot újra felhasználták a későbbi kérésekhez. A lejárati dátum akkor is meghosszabbodik, amikor a Microsoft Hitelesítési kódtár úgy dönt, hogy ideje megújítani a jogkivonatot.

Üzenet megjelenítése

Adja hozzá a következő új metódust a MainPage.xaml.cs fájlhoz:

/// <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;
         });
     }

Az alkalmazás regisztrálása

Tipp.

A cikkben szereplő lépések a portáltól függően kissé eltérhetnek.

Most regisztrálja az alkalmazást:

  1. Jelentkezzen be a Microsoft Entra felügyeleti központba legalább alkalmazásfejlesztőként.
  2. Ha több bérlőhöz is hozzáfér, a felső menü Gépház ikonjávalválthat arra a bérlőre, amelyben regisztrálni szeretné az alkalmazást a Könyvtárak + előfizetések menüből.
  3. Keresse meg az identitásalkalmazásokat>> Alkalmazásregisztrációk.
  4. Új regisztráció kiválasztása.
  5. Adja meg például UWP-App-calling-MSGraphaz alkalmazás nevét. Előfordulhat, hogy az alkalmazás felhasználói látják ezt a nevet, és később módosíthatja.
  6. A Támogatott fióktípusok csoportban válassza a Bármely szervezeti könyvtárban (Bármely Microsoft Entra könyvtár – Több-bérlős) és személyes Microsoft-fiókokban (pl. Skype, Xbox) található Fiókok lehetőséget.
  7. Válassza ki a pénztárgépet.
  8. Az áttekintési lapon keresse meg az alkalmazás (ügyfél) azonosítójának értékét, és másolja ki. Lépjen vissza a Visual Studióba, nyissa meg a MainPage.xaml.cs fájlt, és cserélje le az érték értékét ClientId erre az értékre.

Az alkalmazás hitelesítésének konfigurálása:

  1. A Microsoft Entra Felügyeleti központban válassza a Hitelesítés>platform hozzáadása lehetőséget, majd válassza a Mobil- és asztali alkalmazások lehetőséget.
  2. Az Átirányítási URI-k szakaszban adja meg a következőt https://login.microsoftonline.com/common/oauth2/nativeclient:
  3. Válassza a Konfigurálás lehetőséget.

API-engedélyek konfigurálása az alkalmazáshoz:

  1. API-engedélyek>kiválasztása Engedély hozzáadása.
  2. Válassza a Microsoft Graphot.
  3. Válassza ki a Delegált engedélyeket, keresse meg a User.Read elemet, és ellenőrizze, hogy a User.Read ki van-e jelölve.
  4. Ha módosításokat végzett, a mentéshez válassza az Engedélyek hozzáadása lehetőséget.

Integrált hitelesítés engedélyezése összevont tartományokon (nem kötelező)

Az összevont Microsoft Entra-tartománnyal való használat esetén az integrált Windows-hitelesítés engedélyezéséhez az alkalmazásjegyzéknek további képességeket kell engedélyeznie. Térjen vissza az alkalmazáshoz a Visual Studióban.

  1. Nyissa meg a Package.appxmanifest fájlt.

  2. Válassza a Képességek lehetőséget, és engedélyezze a következő beállításokat:

    • Vállalati hitelesítés
    • Magánhálózatok (ügyfél - kiszolgáló)
    • Megosztott felhasználói tanúsítványok

Fontos

Az integrált Windows-hitelesítés alapértelmezés szerint nincs konfigurálva ehhez a mintához. A kérelmeket vagy Shared User Certificates képességeket kérő Enterprise Authentication alkalmazások esetében a Windows Áruház magasabb szintű ellenőrzést igényel. Emellett nem minden fejlesztő szeretné elvégezni a magasabb szintű ellenőrzést. Ezt a beállítást csak akkor engedélyezze, ha összevont Microsoft Entra-tartománnyal rendelkező integrált Windows-hitelesítésre van szüksége.

Alternatív megközelítés a WithDefaultRedirectURI() használatához

Az aktuális mintában a WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient") metódust használja a rendszer. A használathoz WithDefaultRedirectURI()hajtsa végre az alábbi lépéseket:

  1. A MainPage.XAML.cs fájlban cserélje le WithRedirectUri a következőre WithDefaultRedirectUri:

    Aktuális 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();
    
    

    Frissített 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. Keresse meg az alkalmazás visszahívási URI-ját a redirectURI MainPage.xaml.cs mező hozzáadásával és egy töréspont beállításával:

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

    Futtassa az alkalmazást, majd másolja ki a töréspont találatának redirectUri értékét. Az értéknek a következő értékhez hasonlónak kell lennie: ms-app://s-1-15-2-1352796503-54529114-405753024-3540103335-3203256200-511895534-1429095407/

    Ezután eltávolíthatja a kódsort, mert csak egyszer kell beolvasni az értéket.

  3. A Microsoft Entra Felügyeleti központban adja hozzá a visszaadott értéket a RedirectUri elemhez a Hitelesítés panelen.

A kód tesztelése

Az alkalmazás teszteléséhez válassza az F5 billentyűt a projekt Visual Studióban való futtatásához. Megjelenik a főablak:

Application's user interface

Ha készen áll a tesztelésre, válassza a Microsoft Graph API meghívása lehetőséget. Ezután egy Microsoft Entra szervezeti fiók vagy Microsoft-fiók , például live.com vagy outlook.com használatával jelentkezzen be. Amikor egy felhasználó első alkalommal futtatja ezt a tesztet, az alkalmazás megjelenít egy ablakot, amely arra kéri a felhasználót, hogy jelentkezzen be.

Amikor először jelentkezik be az alkalmazásba, a hozzájárulási képernyő az alábbi képhez hasonlóan jelenik meg. Válassza az Igen lehetőséget a hozzáféréshez való kifejezett hozzájáruláshoz:

Access consent screen

Várt eredmények

A Microsoft Graph API-hívás által visszaadott felhasználói profiladatok az API-hívás eredményei képernyőn láthatók:

API Call Results screen

A Jogkivonat adatai mezőben vagy AcquireTokenSilent azon keresztül AcquireTokenInteractive beszerzett jogkivonat alapvető információi is megjelennek:

Tulajdonság Format Leírás
Username user@domain.com A felhasználót azonosító felhasználónév.
Token Expires DateTime A jogkivonat lejárati ideje. A Microsoft Authentication Library a jogkivonat szükség szerinti megújításával meghosszabbítja a lejárati dátumot.

További információ a hatókörökről és a delegált engedélyekről

A Microsoft Graph API-hoz szükség van a user.read hatókörre egy felhasználó profiljának olvasásához. Ez a hatókör alapértelmezés szerint hozzáadódik minden olyan alkalmazáshoz, amely regisztrálva van az alkalmazásregisztrációs portálon. A Microsoft Graph egyéb API-jaihoz és a háttérkiszolgálóhoz tartozó egyéni API-khoz további hatókörökre lehet szükség. A Microsoft Graph API-hoz például szükség van a Calendars.Read hatókörre a felhasználó naptárainak listázásához.

Ha egy alkalmazás kontextusában szeretné elérni a felhasználó naptárait, adja hozzá a Calendars.Read delegált engedélyt az alkalmazásregisztrációs adatokhoz. Ezután adja hozzá a hatókört Calendars.Read a acquireTokenSilent híváshoz.

Előfordulhat, hogy a felhasználók további hozzájárulást kérnek a hatókörök számának növelése során.

Ismert problémák

1. probléma

Az alábbi hibaüzenetek egyike jelenik meg, amikor összevont Microsoft Entra-tartományban jelentkezik be az alkalmazásba:

  • "Nem található érvényes ügyféltanúsítvány a kérelemben."
  • "Nincs érvényes tanúsítvány a felhasználó tanúsítványtárolójában."
  • "Próbálkozzon újra egy másik hitelesítési módszer kiválasztásával."

Ok: A vállalati és tanúsítványképességek nincsenek engedélyezve.

Megoldás: Kövesse az összevont tartományok integrált hitelesítésének engedélyezése (nem kötelező) című témakörben leírt lépéseket.

2. probléma

Engedélyezi az összevont tartományok integrált hitelesítését, és windows 10 rendszerű számítógépen próbálja meg a Windows Hello használatával bejelentkezni egy többtényezős hitelesítéssel rendelkező környezetbe. Megjelenik a tanúsítványok listája. Ha a PIN-kód használata mellett dönt, a PIN-kód ablak soha nem jelenik meg.

Ok: Ez a probléma a Windows 10 rendszerű asztali számítógépeken futó UWP-alkalmazásokban a webes hitelesítési közvetítő ismert korlátozása. Jól működik a Windows 10 Mobile-on.

Megkerülő megoldás: Válassza a Bejelentkezés más beállításokkal lehetőséget. Ezután válassza a Bejelentkezés felhasználónévvel és jelszóval lehetőséget. Válassza a Jelszó megadása lehetőséget. Ezután haladjon végig a telefonos hitelesítési folyamaton.

Súgó és támogatás

Ha segítségre van szüksége, szeretne jelentést készíteni egy problémáról, vagy szeretne többet megtudni a támogatási lehetőségekről, olvassa el a súgót és a fejlesztők támogatását.

További lépések

További információ a Microsoft Authentication Library (MSAL) használatáról a .NET-alkalmazások hitelesítéséhez és hitelesítéséhez: