Alıştırma - MSAL.NET kullanarak etkileşimli kimlik doğrulaması uygulama
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
- Etkin aboneliği olan bir Azure hesabı. Hesabınız yoksa https://azure.com/free adresinden ücretsiz deneme için kaydolabilirsiniz.
- Visual Studio Code: Visual Studio Code'u uygulamasından https://code.visualstudio.comyükleyebilirsiniz.
- .NET SDK'sının https://dotnet.microsoft.com/download/dotnet bir sürümü (6.0, 7.0 veya 8.0)
Yeni uygulama kaydetme
Portalda oturum açın: https://portal.azure.com
Microsoft Entra ID öğesini arayıp seçin.
Yönet'in altında Uygulama kayıtları> Yeni kayıt'ı seçin.
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 girin http://localhost
.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
Visual Studio Code'ı başlatın ve Terminal'i ve ardından Yeni Terminal'i seçerek bir terminal açın.
Proje için bir klasör oluşturun ve klasörüne geçin.
md az204-auth cd az204-auth
.NET konsol uygulamasını oluşturun.
dotnet new console
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
Microsoft.Identity.Client
Paketi Visual Studio Code'daki bir terminalde projeye ekleyin.dotnet add package Microsoft.Identity.Client
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;
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
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";
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.
Belirteç isteği için izin kapsamını ayarlayın. aşağıdaki kodu altına
PublicClientApplicationBuilder
ekleyin.string[] scopes = { "user.read" };
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
Visual Studio Code terminalinde çalıştırarak
dotnet build
hataları denetleyin ve ardındandotnet run
uygulamayı çalıştırın.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.
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.
Sonuçları konsolda aşağıdaki örneğe benzer şekilde görmeniz gerekir.
Token: eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVhU.....