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.
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
3. Adım: Yönetici onayı
Uygulamayı çalıştırmak artık çıktısını HTTP 403 - Forbidden* error: "Insufficient privileges to complete the operation
döndürür. Bu hata, yalnızca uygulama izinlerinin uygulamaya onay vermek için dizinin Genel Yöneticisini 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öneticiden 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?
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 ConfidentialClientApplication
baş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:
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin