Delen via


Zelfstudie: Gebruikers aanmelden in de .NET EXTERNAL Shell-app met behulp van een externe tenant

Deze zelfstudie is het laatste deel van een reeks die laat zien hoe u een shell-app voor .NET Multi-Platform App UI (.NET MAUI) maakt en voorbereidt op verificatie met behulp van het Microsoft Entra-beheercentrum. In deel 2 van deze reeks hebt u een aangepaste MSAL-clienthelper (Microsoft Authentication Library) toegevoegd om de MSAL SDK te initialiseren, vereiste bibliotheken te installeren en een installatiekopieënresource op te nemen. In deze laatste stap ziet u hoe u aanmeldings- en afmeldingscode toevoegt in .NET MAUI en hoe u de shell-app uitvoert op het Android-platform.

In deze zelfstudie gaat u:

  • Voeg aanmeldings- en afmeldingscode toe.
  • Wijzig de App Shell.
  • Platformspecifieke code toevoegen.
  • App-instellingen toevoegen.
  • Voer de .NET MAUI Shell-app uit en test deze.

Vereisten

Aanmeldings- en afmeldingscode toevoegen

De gebruikersinterface (UI) van een .NET MAUI-app is samengesteld uit objecten die zijn toegewezen aan de systeemeigen besturingselementen van elk doelplatform. De belangrijkste besturingsgroepen die worden gebruikt om de gebruikersinterface van een .NET MAUI-app te maken, zijn pagina's, indelingen en weergaven.

Hoofdweergavepagina toevoegen

Met de volgende stappen wordt de code ingedeeld, zodat de main view code is gedefinieerd.

  1. Verwijder MainPage.xaml en MainPage.xaml.cs uit uw project. Ze zijn niet meer nodig. Zoek in het deelvenster Solution Explorer de vermelding voor MainPage.xaml, klik er met de rechtermuisknop op en selecteer Verwijderen.

  2. Klik met de rechtermuisknop op het SignInMaui-project en selecteer Nieuwe map toevoegen>. Geef de mapweergaven een naam.

  3. Klik met de rechtermuisknop op de weergaven.

  4. Selecteer Nieuw item toevoegen>....

  5. Selecteer .NET MAUI in de lijst met sjablonen.

  6. Selecteer de sjabloon .NET MAUI ContentPage (XAML ). Geef het bestand de naam MainView.xaml.

  7. Selecteer Toevoegen.

  8. Het Bestand MainView.xaml wordt geopend op een nieuw documenttabblad met alle XAML-markeringen die de gebruikersinterface van de pagina vertegenwoordigen. Vervang de XAML-markering door de volgende markeringen:

    <?xml version="1.0" encoding="utf-8" ?>
    <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 x:Class="SignInMaui.Views.MainView"
                 Title="Microsoft Entra External ID"
                 >
        <Shell.BackButtonBehavior>
            <BackButtonBehavior IsVisible="False" IsEnabled="False" />
        </Shell.BackButtonBehavior>
    
        <ScrollView>
            <VerticalStackLayout 
                Spacing="25" 
                Padding="30,0" 
                VerticalOptions="Center">
    
                <Image
                    Source="external_id.png"
                    SemanticProperties.Description="External ID"
                    HeightRequest="200"
                    HorizontalOptions="Center" />
    
                <Label 
                    Text="CIAM"
                    SemanticProperties.HeadingLevel="Level1"
                    FontSize="26"
                    HorizontalOptions="Center" />
    
                <Label 
                    Text="MAUI sample"
                    SemanticProperties.HeadingLevel="Level1"
                    FontSize="26"
                    HorizontalOptions="Center" />
    
                <Button 
                    x:Name="SignInButton"
                    Text="Sign In"
                    SemanticProperties.Hint="Sign In"
                    Clicked="OnSignInClicked"
                    HorizontalOptions="Center"
                    IsEnabled="False"/>
    
            </VerticalStackLayout>
        </ScrollView>
     
    </ContentPage>
    
  9. Sla het bestand op.

    Laten we de belangrijkste onderdelen van de XAML-besturingselementen op de pagina opsplitsen:

    • <ContentPage> is het hoofdobject voor de Klasse MainView.
    • <VerticalStackLayout> is het onderliggende object van de ContentPage. Met dit besturingselement voor indeling worden de onderliggende items verticaal gerangschikt, één na de andere.
    • <Image> geeft een afbeelding weer. In dit geval wordt de Azureactive_directory.png_ gebruikt die u eerder hebt gedownload.
    • <Label> besturingselementen om tekst weer te geven.
    • <Button> kan worden ingedrukt door de gebruiker, waardoor de Clicked gebeurtenis wordt gegenereerd. U kunt code uitvoeren als reactie op de Clicked gebeurtenis.
    • Clicked="OnSignInClicked" de Clicked gebeurtenis van de knop wordt toegewezen aan de OnSignInClicked gebeurtenis-handler, die wordt gedefinieerd in het code-behind-bestand. In de volgende stap maakt u deze code.

De gebeurtenis OnSignInClicked verwerken

De volgende stap bestaat uit het toevoegen van de code voor de gebeurtenis van Clicked de knop.

  1. Vouw in het deelvenster Solution Explorer van Visual Studio het bestand MainView.xaml uit om het bestand code-behind weer te geven MainView.xaml.cs. Open de MainView.xaml.cs en vervang de inhoud van het bestand door de volgende code:

    // Copyright (c) Microsoft Corporation. All rights reserved.
    // Licensed under the MIT License.
    
    using SignInMaui.MSALClient;
    using Microsoft.Identity.Client;
    
    namespace SignInMaui.Views
    {
        public partial class MainView : ContentPage
        {
            public MainView()
            {
                InitializeComponent();
    
                IAccount cachedUserAccount = PublicClientSingleton.Instance.MSALClientHelper.FetchSignedInUserFromCache().Result;
    
                _ = Dispatcher.DispatchAsync(async () =>
                {
                    if (cachedUserAccount == null)
                    {
                        SignInButton.IsEnabled = true;
                    }
                    else
                    {
                        await Shell.Current.GoToAsync("claimsview");
                    }
                });
            }
    
            private async void OnSignInClicked(object sender, EventArgs e)
            {
                await PublicClientSingleton.Instance.AcquireTokenSilentAsync();
                await Shell.Current.GoToAsync("claimsview");
            }
            protected override bool OnBackButtonPressed() { return true; }
    
        }
    }
    

    De MainView klasse is een inhoudspagina die verantwoordelijk is voor het weergeven van de hoofdweergave van de app. In de constructor wordt het gebruikersaccount in de cache opgehaald met behulp van het MSALClientHelper PublicClientSingleton exemplaar en wordt de aanmeldingsknop ingeschakeld als er geen gebruikersaccount in de cache is gevonden.

    Wanneer op de aanmeldingsknop wordt geklikt, wordt de methode aangeroepen om een token op de AcquireTokenSilentAsync achtergrond te verkrijgen en naar de claimsview pagina te navigeren met behulp van de Shell.Current.GoToAsync methode. Bovendien wordt de OnBackButtonPressed methode overschreven om waar te retourneren, wat aangeeft dat de knop Vorige is uitgeschakeld voor deze weergave.

Pagina Claimweergave toevoegen

Met de volgende stappen wordt de code ingedeeld, zodat de ClaimsView pagina wordt gedefinieerd. Op de pagina worden de claims van de gebruiker weergegeven die zijn gevonden in het id-token.

  1. Klik in het deelvenster Solution Explorer van Visual Studio met de rechtermuisknop op de weergaven.

  2. Selecteer Nieuw item toevoegen>....

  3. Selecteer .NET MAUI in de lijst met sjablonen.

  4. Selecteer de sjabloon .NET MAUI ContentPage (XAML ). Geef het bestand de naam ClaimsView.xaml.

  5. Selecteer Toevoegen.

  6. Het bestand ClaimsView.xaml wordt geopend op een nieuw documenttabblad met alle XAML-markeringen die de gebruikersinterface van de pagina vertegenwoordigen. Vervang de XAML-markering door de volgende markeringen:

    <?xml version="1.0" encoding="utf-8" ?>
    <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 x:Class="SignInMaui.Views.ClaimsView"
                 Title="ID Token View">
        <Shell.BackButtonBehavior>
            <BackButtonBehavior IsVisible="False" IsEnabled="False" />
        </Shell.BackButtonBehavior>
        <VerticalStackLayout>
            <Label 
                Text="CIAM"
                FontSize="26"
                HorizontalOptions="Center" />
            <Label 
                Text="MAUI sample"
                FontSize="26"
                Padding="0,0,0,20"
                HorizontalOptions="Center" />
    
            <Label 
                Padding="0,20,0,0"
                VerticalOptions="Center" 
                HorizontalOptions="Center"
                FontSize="18"
                Text="Claims found in ID token"
                />
            <ListView ItemsSource="{Binding IdTokenClaims}"
                      x:Name="Claims">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <Grid Padding="0, 0, 0, 0">
                                <Label Grid.Column="1" 
                                       Text="{Binding}" 
                                       HorizontalOptions="Center" />
                            </Grid>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
            <Button
                x:Name="SignOutButton"
                Text="Sign Out"
                HorizontalOptions="Center"
                Clicked="SignOutButton_Clicked" />
        </VerticalStackLayout>
    </ContentPage>
    

    Deze XAML-markeringscode vertegenwoordigt de ui-indeling voor een claimweergave in een .NET MAUI-app. Het begint met het definiëren van de ContentPage functie met een titel en het uitschakelen van het gedrag van de knop Terug.

    Binnen een VerticalStackLayout, zijn er verschillende Label elementen die statische tekst weergeven, gevolgd door een ListView benoemde Claims die is gekoppeld aan een verzameling die wordt aangeroepen IdTokenClaims om de claims weer te geven die zijn gevonden in het id-token. Elke claim wordt weergegeven binnen een ViewCell met behulp van een DataTemplate en wordt weergegeven als een gecentreerd Label binnen een raster.

    Ten slotte is er een Sign Out knop gecentreerd onder aan de indeling, waarmee de SignOutButton_Clicked gebeurtenis-handler wordt geactiveerd wanneer erop wordt geklikt.

De ClaimsView-gegevens verwerken

De volgende stap bestaat uit het toevoegen van de code voor het verwerken ClaimsView van gegevens.

  1. Vouw in het deelvenster Solution Explorer van Visual Studio het bestand ClaimsView.xaml uit om het bestand code-behind weer te geven ClaimsView.xaml.cs. Open de ClaimsView.xaml.cs en vervang de inhoud van het bestand door de volgende code:

    using SignInMaui.MSALClient;
    using Microsoft.Identity.Client;
    
    namespace SignInMaui.Views;
    
    public partial class ClaimsView : ContentPage
    {
        public IEnumerable<string> IdTokenClaims { get; set; } = new string[] {"No claims found in ID token"};
        public ClaimsView()
        {
            BindingContext = this;
            InitializeComponent();
    
            _ = SetViewDataAsync();
        }
    
        private async Task SetViewDataAsync()
        {
            try
            {
                _ = await PublicClientSingleton.Instance.AcquireTokenSilentAsync();
    
                IdTokenClaims = PublicClientSingleton.Instance.MSALClientHelper.AuthResult.ClaimsPrincipal.Claims.Select(c => c.Value);
    
                Claims.ItemsSource = IdTokenClaims;
            }
    
            catch (MsalUiRequiredException)
            {
                await Shell.Current.GoToAsync("claimsview");
            }
        }
    
        protected override bool OnBackButtonPressed() { return true; }
    
        private async void SignOutButton_Clicked(object sender, EventArgs e)
        {
            await PublicClientSingleton.Instance.SignOutAsync().ContinueWith((t) =>
            {
                return Task.CompletedTask;
            });
    
            await Shell.Current.GoToAsync("mainview");
        }
    }
    

    De ClaimsView.xaml.cs-code vertegenwoordigt de code-achter voor een claimweergave in een .NET MAUI-app. Het begint met het importeren van de benodigde naamruimten en het definiëren van de ClaimsView klasse, die uitbreidt ContentPage. De IdTokenClaims eigenschap is een opsomming van tekenreeksen, die in eerste instantie is ingesteld op één tekenreeks die aangeeft dat er geen claims zijn gevonden.

    De ClaimsView constructor stelt de bindingscontext in op het huidige exemplaar, initialiseert de weergaveonderdelen en roept de SetViewDataAsync methode asynchroon aan. De SetViewDataAsync methode probeert een token op de achtergrond te verkrijgen, haalt de claims op uit het verificatieresultaat en stelt de IdTokenClaims eigenschap in om deze weer te geven in de ListView benoemde Claims. Als er een MsalUiRequiredException probleem optreedt, waarmee wordt aangegeven dat gebruikersinteractie nodig is voor verificatie, navigeert de app naar de claimweergave.

    De OnBackButtonPressed methode overschrijft het gedrag van de knop Terug om altijd waar te retourneren, zodat de gebruiker niet teruggaat vanuit deze weergave. De SignOutButton_Clicked gebeurtenis-handler ondertekent de gebruiker met behulp van het PublicClientSingleton exemplaar en navigeert na voltooiing naar de main view.

De app Shell wijzigen

De AppShell klasse definieert de visuele hiërarchie van een app, de XAML-opmaak die wordt gebruikt bij het maken van de gebruikersinterface van de app. Werk de update bij AppShell om het te laten weten over de Views.

  1. Dubbelklik op het AppShell.xaml bestand in het deelvenster Solution Explorer om de XAML-editor te openen. Vervang de XAML-markering door de volgende code:

    <?xml version="1.0" encoding="UTF-8" ?>
    <Shell
        x:Class="SignInMaui.AppShell"
        xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
        xmlns:local="clr-namespace:SignInMaui.Views"
        Shell.FlyoutBehavior="Disabled">
    
        <ShellContent
            Title="Home"
            ContentTemplate="{DataTemplate local:MainView}"
            Route="MainPage" />
    </Shell>
    

    De XAML-code definieert een AppShell klasse die het flyoutgedrag uitschakelt en de hoofdinhoud instelt op een ShellContent element met een titel Home en een inhoudssjabloon die verwijst naar de MainView klasse.

  2. Vouw in het deelvenster Solution Explorer van Visual Studio het bestand AppShell.xaml uit om het bestand met code-behind weer te geven AppShell.xaml.cs. Open de AppShell.xaml.cs en vervang de inhoud van het bestand door de volgende code:

    // Copyright (c) Microsoft Corporation. All rights reserved.
    // Licensed under the MIT License.
    using SignInMaui.Views;
    
    namespace SignInMaui;
    
    public partial class AppShell : Shell
    {
        public AppShell()
        {
            InitializeComponent();
            Routing.RegisterRoute("mainview", typeof(MainView));
            Routing.RegisterRoute("claimsview", typeof(ClaimsView));
        }
    }
    

    U werkt het AppShell.xaml.cs bestand bij om de benodigde routeregistraties voor de MainView en ClaimsViewop te nemen. Door de InitializeComponent() methode aan te roepen, zorgt u voor de initialisatie van de AppShell klasse. De RegisterRoute() methode koppelt de mainview en claimsview routes aan hun respectieve weergavetypen, MainView en ClaimsView.

Platformspecifieke code toevoegen

Een .NET MAUI-app-project bevat een map Platforms, waarbij elke onderliggende map een platform vertegenwoordigt waarop .NET MAUI zich kan richten. Als u android-toepassingsspecifiek gedrag wilt bieden om de standaardtoepassingsklasse aan te vullen, voert u de volgende stappen uit:

  1. Dubbelklik op Platforms/Android/AndroidManifest.xml het bestand in het deelvenster Solution Explorer om de XML-editor te openen. Update de volgende eigenschappen:

    • Stel de naam van de toepassing in op TENANT CIAM.
    • Stel pakketnaam in op SignInMaui.Droid.
    • Stel de minimale Android-versie in op Android 5.0 (API-niveau 21).
  2. Dubbelklik op Platforms/Android/MainActivity.cs het bestand in het deelvenster Solution Explorer om de csharp-editor te openen. Vervang de inhoud van het bestand door de volgende code:

    // Copyright (c) Microsoft Corporation. All rights reserved.
    // Licensed under the MIT License.
    using Android.App;
    using Android.Content;
    using Android.Content.PM;
    using Android.OS;
    using SignInMaui.MSALClient;
    using Microsoft.Identity.Client;
    
    namespace SignInMaui;
    
    [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
    public class MainActivity : MauiAppCompatActivity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            // configure platform specific params
            PlatformConfig.Instance.RedirectUri = $"msal{PublicClientSingleton.Instance.MSALClientHelper.AzureAdConfig.ClientId}://auth";
            PlatformConfig.Instance.ParentWindow = this;
    
            // Initialize MSAL and platformConfig is set
            _ = Task.Run(async () => await PublicClientSingleton.Instance.MSALClientHelper.InitializePublicClientAppAsync()).Result;
        }
    
        protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);
            AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(requestCode, resultCode, data);
        }
    }
    

    Laten we de belangrijkste onderdelen van de code die u hebt toegevoegd opsplitsen:

    • De benodigde using instructies worden bovenaan opgenomen.
    • De MainActivity klasse wordt gedefinieerd, overgenomen van MauiAppCompatActivity, wat de basisklasse is voor het Android-platform in .NET MAUI.
    • Het kenmerk [Activiteit] wordt toegepast op de MainActivity klasse, waarbij verschillende instellingen voor de Android-activiteit worden opgegeven.
      • Theme = "@style/Maui.SplashTheme" stelt het welkomstthema voor de activiteit in.
      • MainLauncher = true wijst deze activiteit aan als het belangrijkste toegangspunt van de toepassing.
      • ConfigurationChanges geeft de configuratiewijzigingen op die de activiteit kan verwerken, zoals schermgrootte, afdrukstand, ui-modus, schermindeling, kleinste schermgrootte en dichtheid.
    • OnCreate de methode wordt overschreven om aangepaste logica te bieden wanneer de activiteit wordt gemaakt.
      • base.OnCreate(savedInstanceState) roept de basisuitvoering van de methode aan.
      • PlatformConfig.Instance.RedirectUri is ingesteld op een dynamisch gegenereerde waarde op PublicClientSingleton.Instance.MSALClientHelper.AzureAdConfig.ClientIdbasis van . Hiermee configureert u de omleidings-URI voor de MSAL-client.
      • PlatformConfig.Instance.ParentWindow is ingesteld op het huidige activiteitsexemplaren, waarmee het bovenliggende venster voor verificatiegerelateerde bewerkingen wordt opgegeven.
      • PublicClientSingleton.Instance.MSALClientHelper.InitializePublicClientAppAsync() initialiseert de MSAL-client-app asynchroon met behulp van een helpermethode van een singleton-exemplaar met de naam MSALClientHelper. De Task.Run wordt gebruikt om de initialisatie uit te voeren op een achtergrondthread en .Result wordt gebruikt om synchroon te wachten totdat de taak is voltooid.
    • OnActivityResult de methode wordt overschreven voor het afhandelen van het resultaat van een activiteit die door de huidige activiteit is gestart.
      • base.OnActivityResult(requestCode, resultCode, data) roept de basisuitvoering van de methode aan.
      • AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(requestCode, resultCode, data) stelt de argumenten voor de verificatievervolggebeurtenis in op basis van de ontvangen aanvraagcode, resultaatcode en intentiegegevens. Dit wordt gebruikt om de verificatiestroom voort te zetten nadat een externe activiteit een resultaat retourneert.
  3. Selecteer Platforms in het deelvenster Solution Explorer van Visual Studio.

  4. Klik met de rechtermuisknop op de android-map >Add>New Item....

  5. Selecteer de klasse C#-items>. Noem het bestand MsalActivity.cs.

  6. Vervang de inhoud van MsalActivity.cs het bestand door de volgende code:

    // Copyright (c) Microsoft Corporation. All rights reserved.
    // Licensed under the MIT License.
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Android.App;
    using Android.Content;
    using Android.OS;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Microsoft.Identity.Client;
    
    namespace MauiAppBasic.Platforms.Android.Resources
    {
        [Activity(Exported =true)]
        [IntentFilter(new[] { Intent.ActionView },
            Categories = new[] { Intent.CategoryBrowsable, Intent.CategoryDefault },
            DataHost = "auth",
            DataScheme = "msalEnter_the_Application_Id_Here")]
        public class MsalActivity : BrowserTabActivity
        {
        }
    }
    

    Laten we de belangrijkste onderdelen van de code die u hebt toegevoegd opsplitsen:

    • MsalActivity klasse wordt gedeclareerd binnen de MauiAppBasic.Platforms.Android.Resources naamruimte. De klasse neemt de klasse over van de BrowserTabActivity klasse, waarmee wordt aangegeven dat deze de functionaliteit ervan uitbreidt.
    • De klasse is ingericht met het [Activity(Exported = true)] kenmerk, dat aangeeft dat de activiteit wordt geëxporteerd en toegankelijk is via andere methoden.
    • Er wordt een intentiefilter opgegeven met behulp van het kenmerk [IntentFilter(...)]. Hiermee configureert u de activiteit om de ActionView intentie te onderscheppen.
    • Het intentiefilter is ingesteld om de ActionView intentie af te handelen met de opgegeven DataScheme (msalEnter_the_Application_Id_Here) en DataHost ("auth"). Met deze configuratie kan de activiteit het verificatieproces afhandelen door de ActionView intentie te onderscheppen en te verwerken. Vervang door Enter_the_Application_Id_Here de toepassings-id (client) van de app die u eerder hebt geregistreerd.

App-instellingen toevoegen

Met instellingen kunnen gegevens worden gescheiden die het gedrag van een app vanuit de code configureren, zodat het gedrag kan worden gewijzigd zonder de app opnieuw te bouwen. Het MauiAppBuilder biedt ConfigurationManager om instellingen te configureren in onze .NET MAUI-app. Laten we het appsettings.json bestand toevoegen als een EmbeddedResource.

Voer de volgende stappen uit om te maken appsettings.json:

  1. Klik in het deelvenster Solution Explorer van Visual Studio met de rechtermuisknop op het SignInMaui-project >Add>New Item....

  2. Selecteer JSON-configuratiebestand voor web-JavaScript>. Noem het bestand appsettings.json.

  3. Selecteer Toevoegen.

  4. Selecteer appsettings.json

  5. Stel in het deelvenster Eigenschappen de buildactie in op ingesloten resource.

  6. Stel in het deelvenster Eigenschappen Kopiëren in op Uitvoermap om altijd te kopiëren.

  7. Vervang de inhoud van appsettings.json het bestand door de volgende code:

    {
      "AzureAd": {
        "Authority": "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/",
        "ClientId": "Enter_the_Application_Id_Here",
        "CacheFileName": "msal_cache.txt",
        "CacheDir": "C:/temp"
      },
      "DownstreamApi": {
        "Scopes": "openid offline_access"
      }
    }
    
  8. Zoek in de appsettings.jsontijdelijke aanduiding de tijdelijke aanduiding:

    1. Enter_the_Tenant_Subdomain_Here en vervang het door het subdomein Directory (tenant). Als uw primaire tenantdomein bijvoorbeeld is contoso.onmicrosoft.com, gebruikt u contoso. Als u uw tenantnaam niet hebt, leest u de details van uw tenant.
    2. Enter_the_Application_Id_Here en vervang deze door de toepassings-id (client) van de app die u eerder hebt geregistreerd.

Aangepast URL-domein gebruiken (optioneel)

Gebruik een aangepast domein om de verificatie-URL volledig te merken. Vanuit gebruikersperspectief blijven gebruikers in uw domein tijdens het verificatieproces in plaats van omgeleid naar ciamlogin.com domeinnaam.

Volg deze stappen om een aangepast domein te gebruiken:

  1. Gebruik de stappen in Aangepaste URL-domeinen inschakelen voor apps in externe tenants om aangepast URL-domein in te schakelen voor uw externe tenant.

  2. Open appsettings.json bestand:

    1. Werk de waarde van de Authority eigenschap bij naar https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. Vervang Enter_the_Custom_Domain_Here door uw aangepaste URL-domein en Enter_the_Tenant_ID_Here door uw tenant-id. Als u uw tenant-id niet hebt, leest u de details van uw tenant.
    2. Voeg knownAuthorities de eigenschap toe met een waarde [Enter_the_Custom_Domain_Here].

Nadat u de wijzigingen in uw appsettings.json-bestand hebt aangebracht, als uw aangepaste URL-domein is login.contoso.com en uw tenant-id aaaabbbb-0000-cccc-1111-dddd2222eeeee is, moet uw bestand er ongeveer uitzien als het volgende fragment:

{
  "AzureAd": {
    "Authority": "https://login.contoso.com/aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "ClientId": "Enter_the_Application_Id_Here",
    "CacheFileName": "msal_cache.txt",
    "CacheDir": "C:/temp",
    "KnownAuthorities": ["login.contoso.com"]
  },
  "DownstreamApi": {
    "Scopes": "openid offline_access"
  }
}

Mobiele .NET MAUI-app uitvoeren en testen

.NET MAUI-apps zijn ontworpen om te worden uitgevoerd op meerdere besturingssystemen en apparaten. U moet selecteren met welk doel u uw app wilt testen en er fouten in wilt opsporen.

Stel het doel voor foutopsporing in de werkbalk van Visual Studio in op het apparaat waarmee u fouten wilt opsporen en testen. In de volgende stappen ziet u hoe u het doel voor foutopsporing instelt op Android:

  1. Selecteer de vervolgkeuzelijst Doel voor foutopsporing.
  2. Selecteer Android Emulators.
  3. Selecteer het emulatorapparaat.

Voer de app uit door op F5 te drukken of selecteer de afspeelknop boven aan Visual Studio.

  1. U kunt nu de voorbeeld-.NET MAUI Android-app testen. Nadat u de app hebt uitgevoerd, wordt het Android-app-venster weergegeven in een emulator:

    Schermopname van de aanmeldingsknop in de Android-toepassing.

  2. Selecteer in het Android-venster dat wordt weergegeven de knop Aanmelden . Er wordt een browservenster geopend en u wordt gevraagd u aan te melden.

    Schermopname van de gebruikersprompt om referenties in te voeren in de Android-toepassing.

    Tijdens het aanmeldingsproces wordt u gevraagd verschillende machtigingen te verlenen (zodat de toepassing toegang heeft tot uw gegevens). Wanneer u zich hebt aangemeld en toestemming hebt gegeven, wordt in het toepassingsscherm de hoofdpagina weergegeven.

    Schermopname van de hoofdpagina in de Android-toepassing nadat u zich hebt aangemeld.

Zie ook