Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
İş gücü kiracıları
Dış kiracılar (daha fazla bilgi edinin)
Bu öğreticide bir .NET daemon uygulamasından korumalı bir web API'sini çağırma gösterilmektedir. İstemci daemon uygulamasının kendi kimliğini kullanarak erişim belirteci almasını sağlar ve ardından web API'sini çağırırsınız. Bizim örneğimizde korumalı bir Microsoft Graph uç noktası diyoruz.
Bu rehberde;
- Bir daemon uygulamasını uygulamanın kayıt ayrıntılarını kullanacak şekilde yapılandırın. Uygulamaya Microsoft Graph API'sinde User.Read.All iznini verdiğinden emin olun.
- Kendi adına belirteç alan ve korumalı bir web API'sini çağıran bir daemon uygulaması oluşturun.
Önkoşullar
- .NET (İngilizce). Bu öğreticide .NET 9.0 kullanacağız.
- Visual Studio Code veya başka bir kod düzenleyicisi.
- Kiracınızdaki bir uygulama kaydı. Uygulama kaydı ayrıntılarınızda aşağıdakilere sahip olduğunuzdan emin olun:
- Kaydettiğiniz istemci web uygulamasının Uygulama (istemci) Kimliği: .
- Web uygulamanızın kayıtlı olduğu Dizini (kiracı) kimliği.
- Oluşturduğunuz web uygulaması için İstemci gizli anahtarı değeri.
.NET daemon uygulaması oluşturma
Terminalinizi açın ve projenizin yaşamasını istediğiniz klasöre gidin.
Bir .NET konsol uygulaması başlatın ve kök klasörüne gidin.
dotnet new console -n DotnetDaemon cd DotnetDaemon
Paketleri yükleme
Microsoft.Identity.Web ve Microsoft.Identity.Web.DownstreamApi paketlerini yükleyin.
dotnet add package Microsoft.Identity.Web
dotnet add package Microsoft.Identity.Web.DownstreamApi
Microsoft.Identity.Web ASP.NET Core, kimlik doğrulama ara yazılımı ve .NET için Microsoft Authentication Library (MSAL) arasındaki tutkalı sağlar ve bu da uygulamanıza kimlik doğrulaması ve yetkilendirme özellikleri eklemenizi kolaylaştırır.
Microsoft.Identity.Web.DownstreamApi , aşağı akış API'sini çağırmak için kullanılan bir arabirim sağlar.
Kayıt yapılandırmalarını ekleyin ve appsettings.json dosyasını oluşturun
Uygulamanın kök klasöründe appsettings.json dosyası oluşturun.
appsettings.json dosyasına uygulama kaydı ayrıntılarını ekleyin.
{ "AzureAd": { // "Authority": "", you can use this for customer tenants in place of Instance and TenantId values "Instance": "https://login.microsoftonline.com/", "TenantId": "Enter_the_Tenant_ID_Here", "ClientId": "Enter_the_Application_ID_Here", "ClientCredentials": [ { "SourceType": "ClientSecret", "ClientSecret": "Enter_the_Client_Secret_Here" } ] }, "DownstreamApi": { "BaseUrl": "https://graph.microsoft.com", "RelativePath": "/v1.0/users/", "RequestAppToken": true, "Scopes": [ "https://graph.microsoft.com/.default" ] } }Aşağıdaki değerleri kendi değerlerinizle değiştirin:
Değer Açıklama Enter_the_Application_ID_Here Kaydettiğiniz istemci daemon uygulamasının Uygulama (istemci) kimliği. Enter_the_Client_Secret_Here Oluşturduğunuz daemon uygulama gizli anahtarı değeri. Enter_the_Tenant_ID_Here Uygulamanın kayıtlı olduğu dizinin /kiracının kiracı kimliği. Uyarı
Dış kiracıya kayıtlı uygulamalar için Yetkili'yi kullanabilir ve hem Instance hem de TenantId'yi kaldırabilirsiniz.
"Authority": "https://<Enter_the_Tenant_Subdomain_Here>.ciamlogin.com/". burada Enter_the_Tenant_Subdomain_Here kiracının alt etki alanıdır.appsettings.json dosyasını proje dosyasına ekleyin. Proje dosyası, projenizdeki bir .csproj dosyasıdır. Bunun nedeni dosyanın çıkış dizinine kopyalanması gerektiğidir.
<ItemGroup> <None Update="appsettings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup>
Erişim belirteci edinme
kod düzenleyicinizde program.cs dosyasını açın ve içeriğini silin.
Paketlerinizi dosyaya ekleyin.
using Microsoft.Extensions.DependencyInjection; using Microsoft.Identity.Abstractions; using Microsoft.Identity.Web;Jeton alma örneğini oluşturun.
GetDefaultInstancepaketininTokenAcquirerFactorysınıfındakiMicrosoft.Identity.Webyöntemini kullanarak belirteç alma örneği oluşturun. Varsayılan olarak, uygulamayla aynı klasörde varsa örnek bir appsettings.json dosyasını okur.GetDefaultInstanceayrıca hizmet koleksiyonuna hizmet eklememize de olanak tanır.Bu kod satırını program.cs dosyasına ekleyin:
var tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();Uygulama seçeneklerini yapılandırmadan okunacak şekilde ayarlayın ve
DownstreamApihizmetini ekleyin. Hizmet,DownstreamApiaşağı akış API'sini çağırmak için kullanılan bir arabirim sağlar. Bu hizmeti yapılandırma nesnesinde Aşağı AkışAPI olarak adlandırıyoruz. Daemon uygulaması, appsettings.jsondownstreamApi bölümünden aşağı akış API yapılandırmalarını okur. Varsayılan olarak, bellek içi belirteç önbelleği edinirsiniz.program.cs dosyasına aşağıdaki kod parçacığını ekleyin:
const string ServiceName = "DownstreamApi"; tokenAcquirerFactory.Services.AddDownstreamApi(ServiceName, tokenAcquirerFactory.Configuration.GetSection("DownstreamApi"));Çağırdığınız aşağı akış API'si Microsoft Graph'tır. Bu öğreticide
DownstreamApihizmetini kullanıyoruz. Microsoft Graph SDK'sı da kullanabilirsiniz.Jeton toplayıcısını oluşturun. Bu, eklediğiniz tüm hizmetleri oluşturur ve bir hizmet sağlayıcısı döndürür. Eklediğiniz API kaynağına erişmek için bu hizmet sağlayıcısını kullanın. Bu durumda, aşağı akış hizmeti olarak erişim istediğiniz yalnızca bir API kaynağı eklersiniz.
program.cs dosyasına aşağıdaki kod parçacığını ekleyin:
var serviceProvider = tokenAcquirerFactory.Build();
Web API'sini çağırma
Korumalı web API'nizi arayüz
IDownstreamApikullanarak çağırmak amacıyla kod ekleyin. Bu öğreticide bir Microsoft Graph API uç noktası çağırıyoruz.Bu kodu program.cs dosyasına ekleyin:
try { IDownstreamApi downstreamApi = serviceProvider.GetRequiredService<IDownstreamApi>(); var response = await downstreamApi.GetForAppAsync<HttpResponseMessage>("DownstreamApi"); var content = await response.Content.ReadAsStringAsync(); var statusCode = response.StatusCode; Console.WriteLine($"Response status code: {statusCode}"); if (!content.Any()) { Console.WriteLine("There are no users to display."); return; } Console.WriteLine(content); } catch (Exception ex) { Console.WriteLine("We could not retrieve the user's list: " + $"{ex}"); }Kod, appsettings.json dosyasında tanımladığınız uç noktayı çağırır.
GetForAppAsyncArabirimininIDownstreamApiyöntemi uç noktayı çağırmak için kullanılır. Uygulama kendi adına bir arama yapar. yöntemi birHttpResponseMessagenesnesi döndürür. Yanıt daha sonra dize olarak okunur ve konsolda görüntülenir.
İstemci daemon uygulamasını çalıştırma
Daemon uygulamasının kök klasörüne gidin ve aşağıdaki komutu çalıştırın:
dotnet run
Her şey yolundaysa, terminalinizde Yanıt durum kodu: Tamam'ı görmeniz gerekir. Kullanıcılar varsa, kullanıcılar terminalde listelenir, aksi takdirde Görüntülenecek kullanıcı yok iletisini görürsünüz.
Herhangi bir hata oluşursa terminalde bir hata iletisi görürsünüz.
Sorun giderme
Hatayla karşılaşırsanız,
- appsettings.json dosyasına eklediğiniz kayıt ayrıntılarını onaylayın.
- appsettings.json dosyasını proje dosyasına eklediğinizi onaylayın.
- Uygulama izinlerinizin doğru yapılandırıldığını onaylayın.