Aracılığıyla paylaş


Eğitici Kılavuz: Harici bir kiracı kullanarak .NET MAUI kabuk uygulamasında kullanıcıların oturum açması

Şunlar için geçerlidir: Gri X simgesine sahip beyaz daire. İş gücü kiracıları Beyaz onay işareti simgesine sahip yeşil daire. Dış kiracılar (daha fazla bilgi edinin)

Bu öğretici, .NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) kabuk uygulamasının nasıl oluşturulacağını ve Microsoft Entra yönetim merkezini kullanarak kimlik doğrulaması için nasıl hazırlandığını gösteren serinin son bölümüdür. Bu serinin Bölüm 2'de MSAL SDK'sını başlatmak için özel bir Microsoft Kimlik Doğrulama Kitaplığı (MSAL) istemci yardımcısı eklediniz, gerekli kitaplıkları yükleyin ve bir görüntü kaynağı ekleyin. Bu son adım, .NET MAUI'de oturum açma ve oturum kapatma kodu eklemeyi ve kabuk uygulamasını Android platformunda çalıştırmayı gösterir.

Bu öğreticide şunları yapacaksınız:

  • Oturum açma ve oturum kapatma kodu ekleyin.
  • App Shell'i değiştirin.
  • Platforma özgü kod ekleyin.
  • Uygulama ayarlarını ekleyin.
  • .NET MAUI kabuk uygulamasını çalıştırın ve test edin.

Önkoşullar

Oturum açma ve oturum kapatma kodu ekleme

.NET MAUI uygulamasının kullanıcı arabirimi (UI), her hedef platformun yerel denetimlerine eşlenen nesnelerden oluşturulur. .NET MAUI uygulamasının kullanıcı arabirimini oluşturmak için kullanılan ana denetim grupları sayfalar, düzenler ve görünümlerdir.

Ana görünüm sayfası ekleme

Kodumuzun, main view'ın tanımlanacağı şekilde düzenlenmesi sonraki adımlarla sağlanacaktır.

  1. MainPage.xaml ve MainPage.xaml.cs dosyalarını projenizden silin, artık gerekli değiller. Çözüm Gezgini bölmesinde MainPage.xamlgirişini bulun, sağ tıklayın ve Silöğesini seçin.

  2. SignInMaui proje üzerine sağ tıklayın ve >Yeni Klasörekle seçin. Klasörü Görünümler olarak adlandırın.

  3. Görünüm'ye sağ tıklayın.

  4. 'u seçin,>yeni öğe ekle....

  5. Şablon listesinde .NET MAUI seçin.

  6. .NET MAUI ContentPage (XAML) şablonunu seçin. Dosyayı MainView.xaml adlandırın.

  7. Ekle'ı seçin.

  8. MainView.xaml dosyası yeni bir belge sekmesinde açılır ve sayfanın kullanıcı arabirimini temsil eden tüm XAML işaretlemeleri görüntülenir. XAML işaretlemesini aşağıdaki işaretlemeyle değiştirin:

    <?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. Dosyayı kaydedin.

    Şimdi sayfaya yerleştirilen XAML denetimlerinin temel bölümlerini ayıralım:

    • <ContentPage>, MainView sınıfının kök nesnesidir.
    • <VerticalStackLayout>, ContentPage'in alt nesnesidir. Bu düzen denetimi, alt öğelerini dikey olarak ardışık bir şekilde düzenler.
    • <Image> bir görüntü gösterir; bu durumda, daha önce indirdiğiniz azureactive_directory.png_ kullanılır.
    • <Label> denetimleri metin görüntüler.
    • <Button> kullanıcı tarafından basılabilir ve bu da Clicked olayını tetikler. Clicked olayına yanıt olarak kod çalıştırabilirsiniz.
    • Clicked="OnSignInClicked" düğmenin Clicked olayı arka planda kod dosyasında tanımlanacak olan OnSignInClicked olay işleyicisine atanır. Bu kodu bir sonraki adımda oluşturacaksınız.

OnSignInClicked olayını işleme

Sonraki adım, düğmenin Clicked olayının kodunu eklemektir.

  1. Visual Studio'nun Çözüm Gezgini bölmesinde MainView.xaml dosyasını genişleterek arka planda kod dosyasını MainView.xaml.csaçın. MainView.xaml.cs açın ve dosyanın içeriğini aşağıdaki kodla değiştirin:

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

    MainView sınıfı, uygulamanın ana görünümünü görüntülemekle sorumlu bir içerik sayfasıdır. Oluşturucuda, MSALClientHelper örneğinden PublicClientSingleton kullanarak önbelleğe alınmış kullanıcı hesabını alır ve önbelleğe alınmış kullanıcı hesabı bulunamazsa oturum açma düğmesini etkinleştirir.

    Oturum açma düğmesine tıklandığında, sessizce bir belirteç edinmek için AcquireTokenSilentAsync yöntemini çağırır ve claimsview yöntemini kullanarak Shell.Current.GoToAsync sayfasına yönlenir. Ayrıca, OnBackButtonPressed yöntemi true geri döndürmesi için geçersiz kılınır ve bu, bu görünümde geri düğmesinin devre dışı olduğunu belirtir.

Talep görünümü sayfası ekle

Sonraki adımlar, ClaimsView sayfasının tanımlanması için kodu düzenler. Sayfada kullanıcının kimlik belirtecinde bulunan talepleri görüntülenir.

  1. Visual Studio'nun Çözüm Gezgini bölmesinde, Görünümlerüzerine sağ tıklayın.

  2. 'u seçin,>yeni öğe ekle....

  3. Şablon listesinde .NET MAUI seçin.

  4. .NET MAUI ContentPage (XAML) şablonunu seçin. Dosyayı ClaimsView.xamlolarak adlandırın.

  5. Ekle'ı seçin.

  6. ClaimsView.xaml dosyası yeni bir belge sekmesinde açılır ve sayfanın kullanıcı arabirimini temsil eden tüm XAML işaretlemesi görüntülenir. XAML işaretlemesini aşağıdaki işaretlemeyle değiştirin:

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

    Bu XAML işaretleme kodu, .NET MAUI uygulamasındaki talep görünümünün kullanıcı arabirimi düzenini temsil eder. Başlangıç olarak ContentPage'ı bir başlıkla tanımlar ve geri düğmesi işlevini devre dışı bırakır.

    İçeriğinde birkaç VerticalStackLayout öğesi bulunan bir Label'da, bu öğeler statik metin görüntüler ve bunu takiben, kimlik belirtecinde bulunan talepleri görüntülemek için ListView adlı bir koleksiyona bağlanan Claims adlı bir IdTokenClaims yer alır. Her talep bir ViewCell içinde bir DataTemplate kullanılarak işlenir ve bir Kılavuz içinde ortalanmış Label olarak görüntülenir.

    Son olarak, düzenin en altında ortalanmış bir Sign Out düğmesi vardır ve bu düğme tıklandığında SignOutButton_Clicked olay işleyicisini tetikler.

ClaimsView verilerini işleme

Sonraki adım, ClaimsView verileri işlemek için kodu eklemektir.

  1. Visual Studio'nun Çözüm Gezgini bölmesinde, ClaimsView.xaml dosyasını genişleterek arka planda kod dosyasını ClaimsView.xaml.csgörüntüleyin. ClaimsView.xaml.cs açın ve dosyanın içeriğini aşağıdaki kodla değiştirin:

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

    ClaimsView.xaml.cs kodu, .NET MAUI uygulamasındaki talep görünümünün arka planındaki kodu temsil eder. Gerekli ad alanlarını içeri aktararak ve ClaimsViewgenişleten ContentPage sınıfını tanımlayarak başlar. IdTokenClaims özelliği, başlangıçta hiçbir talep bulunamadığını belirten tek bir dizeye ayarlanmış olan dizelerin numaralandırılabilir bir özelliğidir.

    ClaimsView oluşturucu bağlama bağlamını geçerli örneğe ayarlar, görünüm bileşenlerini başlatır ve SetViewDataAsync yöntemini zaman uyumsuz olarak çağırır. SetViewDataAsync yöntemi, belirteci sessiz bir şekilde edinmeyi dener, kimlik doğrulama sonucundan talepleri alır ve IdTokenClaims özelliğini ListViewadlı Claims'de göstermeye ayarlar. Kimlik doğrulaması için kullanıcı etkileşimi gerektiğini belirten bir MsalUiRequiredException oluşursa, uygulama talep görünümüne gider.

    OnBackButtonPressed yöntemi, her zaman true döndürmek için geri düğmesi davranışını geçersiz kılar ve kullanıcının bu görünümden geri dönmesini engeller. SignOutButton_Clicked olay işleyicisi, PublicClientSingleton örneğini kullanarak kullanıcıyı oturumdan çıkarır ve tamamlandığında main view'ye gider.

App Shell'i değiştirme

AppShell sınıfı, bir uygulamanın görsel hiyerarşisini, uygulamanın kullanıcı arabirimini oluştururken kullanılan XAML işaretlemesini tanımlar. AppShellViewshakkında bilgilendirmek için güncelleyin.

  1. XAML düzenleyicisini açmak için AppShell.xaml bölmesindeki dosyasına çift tıklayın. XAML işaretlemesini aşağıdaki kodla değiştirin:

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

    XAML kodu, açılır öğe davranışını devre dışı bırakıp, başlık AppShell olan ve ShellContent sınıfına işaret eden bir içerik şablonuyla ana içeriği Home öğesine ayarlayan bir MainView sınıfını tanımlar.

  2. Visual Studio'nun Çözüm Gezgini bölmesinde, AppShell.xaml dosyasını genişleterek arka planda kod dosyasını AppShell.xaml.csaçın. AppShell.xaml.cs açın ve dosyanın içeriğini aşağıdaki kodla değiştirin:

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

    AppShell.xaml.cs dosyasını MainView ve ClaimsViewiçin gerekli yol kayıtlarını içerecek şekilde güncelleştirirsiniz. InitializeComponent() yöntemini çağırarak, AppShell sınıfının başlatılmasını sağlarsınız. RegisterRoute() yöntemi, mainview ve claimsview yollarını ilgili görünüm türleri, MainView ve ClaimsViewile ilişkilendirir.

Platforma özgü kod ekleme

.NET MAUI uygulama projesi, .NET MAUI'nin hedefleyebilecekleri bir platformu temsil eden her alt klasörün bulunduğu bir Platformlar klasörü içerir. Varsayılan uygulama sınıfını desteklemek üzere Android uygulamasına özgü davranış sağlamak için şu adımları izleyin:

  1. XML düzenleyicisini açmak için Platforms/Android/AndroidManifest.xml bölmesinde dosyasına çift tıklayın. Aşağıdaki özellikleri güncelleştirin:

    • Uygulama adıMAUI CIAMolarak ayarlayın.
    • Paket adı'i SignInMaui.Droidolarak ayarlayın.
    • En düşük Android sürümünü Android 5.0 (API düzeyi 21)olarak ayarlayın.
  2. csharp düzenleyicisini açmak için Platforms/Android/MainActivity.cs bölmesinde dosyasına çift tıklayın. Dosyanın içeriğini aşağıdaki kodla değiştirin:

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

    Şimdi eklediğiniz kodun önemli bölümlerini ayıralım:

    • Gerekli using deyimleri en üste eklenir.
    • MainActivity sınıfı tanımlanır ve .NET MAUI'deki Android platformu için temel sınıf olan MauiAppCompatActivity'den devralınır.
    • [Activity] özniteliği, Android etkinliği için çeşitli ayarlar belirterek MainActivity sınıfına uygulanır.
      • Theme = "@style/Maui.SplashTheme" etkinliğin giriş temasını ayarlar.
      • MainLauncher = true bu etkinliği uygulamanın ana giriş noktası olarak belirtir.
      • ConfigurationChanges, etkinliğin yönetebileceği yapılandırma değişikliklerini, örneğin ekran boyutu, yönlendirme, UI modu, ekran düzeni, en küçük ekran boyutuve yoğunlukolarak belirtir.
    • etkinlik oluşturulurken özel mantık sağlamak için OnCreate yöntemi geçersiz kılınmıştır.
      • base.OnCreate(savedInstanceState) yönteminin temel uygulamasını çağırır.
      • PlatformConfig.Instance.RedirectUri, PublicClientSingleton.Instance.MSALClientHelper.AzureAdConfig.ClientIdtemelinde dinamik olarak oluşturulan bir değere ayarlanır. MSAL istemcisi için yeniden yönlendirme URI'sini yapılandırıyor.
      • PlatformConfig.Instance.ParentWindow, kimlik doğrulamasıyla ilgili işlemlerde üst pencereyi belirten mevcut etkinlik örneğine ayarlanır.
      • PublicClientSingleton.Instance.MSALClientHelper.InitializePublicClientAppAsync(), MSALClientHelperadlı tekil örnekten bir yardımcı yöntemi kullanarak MSAL istemci uygulamasını zaman uyumsuz olarak başlatır. Task.Run, başlatmayı bir arka plan iş parçacığında yürütmek için kullanılır ve .Result görevin tamamlanmasını zaman uyumlu bir şekilde beklemek için kullanılır.
    • geçerli etkinlik tarafından başlatılan etkinliğin sonucunu işlemek için OnActivityResult yöntemi geçersiz kılındı.
      • base.OnActivityResult(requestCode, resultCode, data) yönteminin temel uygulamasını çağırır.
      • AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(requestCode, resultCode, data) alınan istek koduna, sonuç koduna ve niyet verilerine göre kimlik doğrulama devamı etkinliği olayının bağımsız değişkenlerini ayarlar. Bu, bir dış etkinlik sonuç döndürdüğünde kimlik doğrulama akışına devam etmek için kullanılır.
  3. Visual Studio'nun Çözüm Gezgini bölmesinde Platformlaröğesini seçin.

  4. Android klasörüne sağ tıklayın >Yeni>Öğe Ekle....

  5. C# Öğelerini>Sınıfolarak seçin. dosyayı MsalActivity.csolarak adlandırın.

  6. MsalActivity.cs dosyasının içeriğini aşağıdaki kodla değiştirin:

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

    Şimdi eklediğiniz kodun önemli bölümlerini ayıralım:

    • MsalActivity sınıfı MauiAppBasic.Platforms.Android.Resources ad alanında bildirilir. BrowserTabActivity sınıfından devralınan bu sınıf, işlevselliğini genişlettiğini belirtir.
    • sınıfı, etkinliğin dışarı aktarıldığını ve diğer yöntemler tarafından erişilebileceğini belirten [Activity(Exported = true)] özniteliğiyle dekore edilmiştir.
    • "[IntentFilter(...)]" özniteliği kullanılarak bir amaç filtresi belirtilir. Etkinliği, ActionView amacını kesecek şekilde yapılandırıyor.
    • Amaç filtresi, belirtilen ActionView (DataScheme) ve msalEnter_the_Application_Id_Here ("kimlik doğrulaması") ile DataHost amacını işleyecek şekilde ayarlanır. Bu yapılandırma, etkinliğin ActionView amacını keserek ve işleyerek kimlik doğrulama işlemini işlemesine olanak tanır. Daha önce kaydettiğiniz uygulamanın Enter_the_Application_Id_Here ile 'ı değiştirin.

Uygulama ayarları ekleme

Ayarlar, bir uygulamanın davranışını koddan yapılandıran verilerin ayrılmasına olanak tanıyarak davranışın uygulamayı yeniden oluşturmadan değiştirilmesini sağlar. MauiAppBuilder, .NET MAUI uygulamamızda ayarları yapılandırmak için ConfigurationManager sağlar. şimdi appsettings.json dosyasını EmbeddedResourceolarak ekleyelim.

appsettings.jsonoluşturmak için şu adımları izleyin:

  1. Visual Studio'nun Çözüm Gezgini bölmesinde, SignInMaui projesine sağ tıklayın >Yeni>Öğe Ekle....

  2. Web>JavaScript JSON Yapılandırma Dosyası'nı seçin. dosyayı appsettings.jsonolarak adlandırın.

  3. Ekle'ı seçin.

  4. appsettings.json seçin

  5. Özellikler bölmesinde, Derleme EylemiGömülü kaynakolarak ayarlayın.

  6. Özellikleri bölmesinde, Çıkış Dizinine Kopyala seçeneğini Her zaman kopyalaolarak ayarlayın.

  7. appsettings.json dosyasının içeriğini aşağıdaki kodla değiştirin:

    {
      "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. appsettings.jsoniçinde, yer tutucuyu bulun:

    1. Enter_the_Tenant_Subdomain_Here dizin (kiracı) alt alan adıyla değiştirin. Örneğin, kiracınızın birincil domaini contoso.onmicrosoft.comise contosokullanın. Eğer kiracı adınız yoksa, kiracı bilgilerinizi nasıl okuyacağınızı öğrenin.
    2. Enter_the_Application_Id_Here ve daha önce kaydettiğiniz uygulamanın Uygulama (istemci) kimliğiyle değiştirin.

Özel URL alan adı kullanma (İsteğe bağlı)

Kimlik doğrulama URL'sini tamamen markalamak için özel bir etki alanı kullanın. Kullanıcı perspektifinden baktığımızda, kullanıcılar kimlik doğrulama işlemi sırasında ciamlogin.com yerine etki alanınızda kalmaya devam eder.

Özel etki alanı kullanmak için şu adımları izleyin:

  1. Dış kiracınızda özel URL etki alanını etkinleştirmek dış kiracınızdaki uygulamalar için özel URL etki alanlarını etkinleştirme adımlarını kullanın.

  2. appsettings.json dosyasını açın:

    1. Authority özelliğinin değerini https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Hereolarak güncelleştirin. Enter_the_Custom_Domain_Here, özel URL alanınızla ve Enter_the_Tenant_ID_Here, kiracı kimliğinizle değiştirin. Kiracı kimliğiniz yoksa, kiracı ayrıntılarınızı nasıl okuyacağınızı öğrenin.
    2. knownAuthorities özelliğini, değerine sahip olacak şekilde [Enter_the_Custom_Domain_Here]olarak ekleyin.

appsettings.json dosyanızda değişiklik yaptıktan sonra, özel URL etki alanınız login.contoso.com iseve kiracı kimliğiniz aaaabbbb-0000-cccc-1111-dddd2222eeeeise, dosyanız aşağıdaki kod örneğine benzer şekilde olmalıdır:

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

.NET MAUI mobil uygulamasını çalıştırma ve test edin

.NET MAUI uygulamaları birden çok işletim sistemi ve cihazda çalışacak şekilde tasarlanmıştır. Uygulamanızı test etmek ve hatalarını ayıklamak istediğiniz hedefi seçmeniz gerekir.

Visual Studio araç çubuğundaki Hata Ayıklama Hedefi'i, hata ayıklamak ve test etmek istediğiniz cihaza ayarlayın. Aşağıdaki adımlarda, Hata Ayıklama Hedefi'ninAndroidolarak nasıl ayarlanacağı gösterilmektedir.

  1. Hata Ayıklama Hedefi açılan listesini seçin.
  2. Android ÖykünücüleriSeçin.
  3. Öykünücü cihazı seçin.

F5 basarak uygulamayı çalıştırın veya Visual Studio'nun üst kısmındaki oynat düğmesini seçin.

  1. Artık örnek .NET MAUI Android uygulamasını test edebilirsiniz. Uygulamayı çalıştırdıktan sonra, Android uygulama penceresi emülatörde görünür.

    Android uygulamasında oturum açma düğmesinin ekran görüntüsü.

  2. Görüntülenen Android penceresinde Oturum Aç düğmesini seçin. Bir tarayıcı penceresi açılır ve oturum açmanız istenir.

    Android uygulamasında kimlik bilgilerini girmek için kullanıcı isteminin ekran görüntüsü.

    Oturum açma işlemi sırasında, çeşitli izinler vermeniz istenir (uygulamanın verilerinize erişmesine izin vermek için). Başarılı oturum açma ve onay sonrasında uygulama ekranı ana sayfayı görüntüler.

    Oturum açtıktan sonra Android uygulamasındaki ana sayfanın ekran görüntüsü.

Ayrıca bkz.