Alıştırma - MSAL.NET kullanarak etkileşimli kimlik doğrulaması uygulama

Tamamlandı

Bu alıştırmada aşağıdaki eylemleri gerçekleştirmeyi öğreneceksiniz:

  • Microsoft kimlik platformu ile uygulama kaydetme
  • sınıfını PublicClientApplicationBuilder MSAL.NET
  • Konsol uygulamasında etkileşimli olarak belirteç alma

Önkoşullar

Yeni uygulama kaydetme

  1. Portalda oturum açın: https://portal.azure.com

  2. Microsoft Entra ID öğesini arayıp seçin.

  3. Yönet'in altında Uygulama kayıtları> Yeni kayıt'ı seçin.

  4. Bir uygulamayı kaydet sayfası göründüğünde, uygulamanızın kayıt bilgilerini girin:

    Alan Değer
    Adı az204appreg
    Desteklenen hesap türleri Yalnızca bu kuruluş dizininde Hesaplar'ı seçin
    Yeniden yönlendirme URI'si (isteğe bağlı) Genel istemci/yerel (mobil & masaüstü) öğesini seçin ve sağdaki kutuya girinhttp://localhost.
  5. Kaydet'i seçin.

Microsoft Entra Id, uygulamanıza benzersiz bir uygulama (istemci) kimliği atar ve uygulamanızın Genel Bakış sayfasına yönlendirilirsiniz.

Konsol uygulamasını ayarlama

  1. Visual Studio Code'ı başlatın ve Terminal'i ve ardından Yeni Terminal'i seçerek bir terminal açın.

  2. Proje için bir klasör oluşturun ve klasörüne geçin.

    md az204-auth
    cd az204-auth
    
  3. .NET konsol uygulamasını oluşturun.

    dotnet new console
    
  4. Az204-auth klasörünü Visual Studio Code'da açın.

    code . -r
    

Konsol uygulamasını oluşturma

Bu bölümde, projeye gerekli paketleri ve kodu eklersiniz.

Paket ekleme ve deyimleri kullanma

  1. Microsoft.Identity.Client Paketi Visual Studio Code'daki bir terminalde projeye ekleyin.

    dotnet add package Microsoft.Identity.Client
    
  2. Program.cs dosyasını açın ve zaman uyumsuz işlemleri etkinleştirmek için ve eklemek Microsoft.Identity.Client için deyimler ekleyinusing.

    using System.Threading.Tasks;
    using Microsoft.Identity.Client;
    
  3. Zaman uyumsuzu etkinleştirmek için Main yöntemini değiştirin.

    public static async Task Main(string[] args)
    

Etkileşimli kimlik doğrulaması için kod ekleme

  1. Uygulama (istemci) ve Dizin (kiracı) kimliklerini tutmak için iki değişkene ihtiyacınız vardır. Bu değerleri portaldan kopyalayabilirsiniz. Aşağıdaki kodu ekleyin ve dize değerlerini portaldan uygun değerlerle değiştirin.

    private const string _clientId = "APPLICATION_CLIENT_ID";
    private const string _tenantId = "DIRECTORY_TENANT_ID";
    
  2. Yetkilendirme bağlamını PublicClientApplicationBuilder oluşturmak için sınıfını kullanın.

    var app = PublicClientApplicationBuilder
        .Create(_clientId)
        .WithAuthority(AzureCloudInstance.AzurePublic, _tenantId)
        .WithRedirectUri("http://localhost")
        .Build();
    
    Kod Açıklama
    .Create clientID'den bir PublicClientApplicationBuilder oluşturur.
    .WithAuthority ADFS sunucusuna karşılık gelen bilinen bir Yetkili ekler. Kodda Genel bulutu belirtiyoruz ve kaydettiğimiz uygulama için kiracıyı kullanıyoruz.

Belirteç alma

az204appreg uygulamasını kaydettiğinizde, microsoft graph için otomatik olarak bir API izni user.read oluşturulur. Belirteç almak için bu izni kullanırsınız.

  1. Belirteç isteği için izin kapsamını ayarlayın. aşağıdaki kodu altına PublicClientApplicationBuilderekleyin.

    string[] scopes = { "user.read" };
    
  2. Belirteci istemek için kod ekleyin ve sonucu konsola yazın.

    AuthenticationResult result = await app.AcquireTokenInteractive(scopes).ExecuteAsync();
    
    Console.WriteLine($"Token:\t{result.AccessToken}");
    

Tamamlanan uygulamayı gözden geçirme

Program.cs dosyasının içeriği aşağıdaki örneğe benzemelidir:

using System;
using System.Threading.Tasks;
using Microsoft.Identity.Client;

namespace az204_auth
{
    class Program
    {
        private const string _clientId = "APPLICATION_CLIENT_ID";
        private const string _tenantId = "DIRECTORY_TENANT_ID";

        public static async Task Main(string[] args)
        {
            var app = PublicClientApplicationBuilder
                .Create(_clientId)
                .WithAuthority(AzureCloudInstance.AzurePublic, _tenantId)
                .WithRedirectUri("http://localhost")
                .Build(); 
            string[] scopes = { "user.read" };
            AuthenticationResult result = await app.AcquireTokenInteractive(scopes).ExecuteAsync();

            Console.WriteLine($"Token:\t{result.AccessToken}");
        }
    }
}

Uygulamayı çalıştırma

  1. Visual Studio Code terminalinde çalıştırarak dotnet build hataları denetleyin ve ardından dotnet run uygulamayı çalıştırın.

  2. Uygulama, kimlik doğrulaması yapmak istediğiniz hesabı seçmenizi isteyen varsayılan tarayıcıyı açar. Listede birden çok hesap varsa, uygulamada kullanılan kiracıyla ilişkili hesabı seçin.

  3. Kayıtlı uygulamada ilk kez kimlik doğrulaması yaptıysanız, hesabınızla ilişkili verileri okumak için uygulamayı onaylamanızı isteyen bir İzinler isteği bildirimi alırsınız. Kabul Et’i seçin.

    Select **Accept** to grant the permission.

  4. Sonuçları konsolda aşağıdaki örneğe benzer şekilde görmeniz gerekir.

    Token:  eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVhU.....