Hızlı Başlangıç: Konsol uygulamasının kimliğini kullanarak belirteç alma ve Microsoft Graph API'sini çağırma

Hoş Geldiniz! Bu muhtemelen beklediğiniz sayfa değildir. Bir düzeltme üzerinde çalışırken bu bağlantı sizi doğru makaleye götürmelidir:

Hızlı Başlangıç: .NET konsol uygulamasında belirteç alma ve Microsoft Graph'ı çağırma

Bu sorun için özür dileriz ve bu sorunu çözmek için çalışırken sabrınızı takdir ediyoruz.

Aşağıdaki hızlı başlangıçta bir .NET konsol uygulamasının Microsoft Graph API'sini çağırmak ve dizindeki kullanıcıların listesini görüntülemek için nasıl erişim belirteci alabileceğini gösteren bir kod örneği kullanılmaktadır. Ayrıca bir işin veya Windows hizmetinin kullanıcı kimliği yerine uygulama kimliğiyle nasıl çalışabileceğini de gösterir. Bu hızlı başlangıçtaki örnek konsol uygulaması da bir daemon uygulaması olduğundan gizli bir istemci uygulamasıdır.

Önkoşullar

.NET 6.0 SDK'sının en düşük gereksinimi.

Hızlı başlangıç uygulamanızı indirme ve yapılandırma

1. Adım: Uygulamanızı Azure portalında yapılandırma

Bu hızlı başlangıçtaki kod örneğinin çalışması için bir istemci gizli dizisi oluşturun ve Graph API'sinin User.Read.All uygulama iznini ekleyin.

Already configured Uygulamanız bu özniteliklerle yapılandırıldı.

2. Adım: Visual Studio projenizi indirme

Visual Studio 2022'yi kullanarak projeyi çalıştırın.

İpucu

Windows'ta yol uzunluğu sınırlamalarından kaynaklanan hataları önlemek için, arşivi ayıklamanızı veya depoyu sürücünüzün köküne yakın bir dizine kopyalamanızı öneririz.

Not

Enter_the_Supported_Account_Info_Here

Uygulamayı çalıştırmak artık çıktısını HTTP 403 - Forbidden* error: "Insufficient privileges to complete the operationdöndürür. Bu hata, yalnızca uygulama izinlerinin uygulamaya onay vermek için dizinin Genel Yönetici istrator'ını gerektirmesi nedeniyle oluşur. Role bağlı olarak aşağıdaki seçeneklerden birini belirleyin.

Genel kiracı yöneticisi

Genel kiracı yöneticisi için API İzinleri sayfasına gidin ve Enter_the_Tenant_Name_Here için yönetici onayı ver'i seçin.

Standart kullanıcı

Kiracınızın standart bir kullanıcısı için Genel Yönetici istrator'dan uygulamaya yönetici onayı vermesini isteyin. Bunu yapmak için yöneticiye aşağıdaki URL'yi sağlayın:

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

AADSTS50011: No reply address is registered for the application Hata, yukarıdaki URL'yi kullanarak uygulamaya onay verdikten sonra görüntülenebilir. Uygulamanın ve URL'nin yeniden yönlendirme URI'si olmadığından bu hata oluşur. Bu yoksayılabilir.

4. Adım: Uygulamayı çalıştırma

Visual Studio'da F5 tuşuna basarak uygulamayı çalıştırın. Aksi takdirde, uygulamayı komut istemi, konsol veya terminal aracılığıyla çalıştırın:

cd {ProjectFolder}\1-Call-MSGraph\daemon-console
dotnet run

Bu kodda:

  • {ProjectFolder} , .zip dosyasını ayıkladığınız klasördür. C:\Azure-Samples\active-directory-dotnetcore-daemon-v2 bunun bir örneğidir.

Sonuç olarak Microsoft Entra Id'deki kullanıcıların listesi görüntülenmelidir.

Bu hızlı başlangıç uygulaması, kendisini gizli istemci olarak tanımlamak için bir istemci gizli dizisi kullanır. İstemci gizli dizisi, proje dosyalarına düz metin dosyası olarak eklenir. Güvenlik nedeniyle, uygulamayı üretim uygulaması olarak değerlendirmeden önce istemci gizli dizisi yerine sertifika kullanmanız önerilir. Sertifika kullanma hakkında daha fazla bilgi için bu yönergelere bakın.

Daha Fazla Bilgi

Bu bölümde, kullanıcılarda oturum açmak için gereken koda genel bir bakış sunun. Bu genel bakış, kodun > nasıl çalıştığını, ana bağımsız değişkenlerin ne olduğunu ve mevcut bir .NET konsol uygulamasına nasıl oturum açabileceğinizi anlamak için yararlı olabilir.

Örnek nasıl çalışır?

Diagram that shows how the sample app generated by this quickstart works.

Microsoft.Identity.Web.GraphServiceClient

Microsoft Identity Web (Microsoft.Identity.Web.TokenAcquisition paketinde), Microsoft kimlik platformu tarafından korunan bir API'ye erişmek için belirteç istemek için kullanılan kitaplıktır. Bu hızlı başlangıç, belirteçleri temsilci izinleri yerine uygulamanın kendi kimliğini kullanarak istemektedir. Bu durumda kimlik doğrulama akışı, istemci kimlik bilgileri OAuth akışı olarak bilinir. İstemci kimlik bilgileri akışıyla MSAL.NET kullanma hakkında daha fazla bilgi için bu makaleye bakın. Bu hızlı başlangıçtaki daemon uygulaması Microsoft Graph'ı çağırırsa, Microsoft Graph'a otomatik olarak kimliği doğrulanmış istekleri işleyen (ve kendisine Microsoft.Identity.Web.TokenAcquisition'a başvuran) Microsoft.Identity.Web.GraphServiceClient paketini yüklersiniz

Microsoft.Identity.Web.GraphServiceClient, Visual Studio Paket Yöneticisi Konsolu'nda aşağıdaki komut çalıştırılarak yüklenebilir:

dotnet add package Microsoft.Identity.Web.GraphServiceClient

Uygulama başlatma

Aşağıdaki kodu ekleyerek Microsoft.Identity.Web başvurusu ekleyin:

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Graph;
using Microsoft.Identity.Abstractions;
using Microsoft.Identity.Web;

Ardından, uygulamayı aşağıdakilerle başlatın:

// Get the Token acquirer factory instance. By default it reads an appsettings.json
// file if it exists in the same folder as the app (make sure that the 
// "Copy to Output Directory" property of the appsettings.json file is "Copy if newer").
TokenAcquirerFactory tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();

// Configure the application options to be read from the configuration
// and add the services you need (Graph, token cache)
IServiceCollection services = tokenAcquirerFactory.Services;
services.AddMicrosoftGraph();
// By default, you get an in-memory token cache.
// For more token cache serialization options, see https://aka.ms/msal-net-token-cache-serialization

// Resolve the dependency injection.
var serviceProvider = tokenAcquirerFactory.Build();

Bu kod, appsettings.json dosyasında tanımlanan yapılandırmayı kullanır:

{
   "AzureAd": {
       "Instance": "https://login.microsoftonline.com/",
       "TenantId": "[Enter here the tenantID or domain name for your Azure AD tenant]",
       "ClientId": "[Enter here the ClientId for your application]",
       "ClientCredentials": [
           {
              "SourceType": "ClientSecret",
              "ClientSecret": "[Enter here a client secret for your application]"
           }
       ]
   }
}
Öğe Açıklama
ClientSecret Azure portalında uygulama için oluşturulan istemci gizli dizisi.
ClientId Azure portalında kayıtlı uygulamanın uygulama (istemci) kimliği. Bu değer, Uygulamanın Azure portalındaki Genel Bakış sayfasında bulunabilir.
Instance (İsteğe bağlı) Güvenlik belirteci hizmeti (STS), uygulamanın kimlik doğrulaması için uç nokta örneğini verebilir. Genellikle https://login.microsoftonline.com/ genel bulut içindir.
TenantId Kiracının adı veya kiracı kimliği.

Daha fazla bilgi için ConfidentialClientApplicationbaşvuru belgelerine bakın.

Microsoft Graph'ı çağırma

Uygulamanın kimliğini kullanarak belirteç istemek için şu AcquireTokenForClient yöntemi kullanın:

GraphServiceClient graphServiceClient = serviceProvider.GetRequiredService<GraphServiceClient>();
var users = await graphServiceClient.Users
              .GetAsync(r => r.Options.WithAppOnly());

Yardım ve destek 

Yardıma ihtiyacınız varsa, bir sorunu bildirmek veya destek seçenekleriniz hakkında bilgi edinmek istiyorsanız bkz . Geliştiriciler için yardım ve destek.

Sonraki adımlar

Daemon uygulamaları hakkında daha fazla bilgi edinmek için senaryoya genel bakış bölümüne bakın: