Hızlı Başlangıç: Kullanıcıları oturum açma ve ASP.NET bir web uygulamasından Microsoft Graph API'sini çağırma

Bu hızlı başlangıçta, Kullanıcıları Microsoft Entra hesaplarıyla oturum açabilen ASP.NET bir web uygulamasını gösteren bir kod örneği indirip çalıştıracaksınız.

Bkz. Örnek bir çizim için nasıl çalışır ?

Önkoşullar

Uygulamayı kaydetme ve indirme

İpucu

Bu makaledeki adımlar, başladığınız portala göre biraz değişiklik gösterebilir.

Uygulamanızı oluşturmaya başlamak için iki seçeneğiniz vardır: otomatik veya el ile yapılandırma.

Otomatik yapılandırma

Uygulamanızı otomatik olarak yapılandırmak ve ardından kod örneğini indirmek istiyorsanız şu adımları izleyin:

  1. Microsoft Entra yönetim merkezi hızlı başlangıç deneyiminde en azından Bulut Uygulaması Yönetici istrator olarak oturum açın.
  2. Uygulamanız için bir ad girin ve Kaydet'i seçin.
  3. Yönergeleri izleyerek yeni uygulamanızı tek bir tıklamayla indirin ve otomatik olarak yapılandırın.

El ile yapılandırma

Uygulamanızı ve kod örneğinizi el ile yapılandırmak istiyorsanız aşağıdaki yordamları kullanın.

1. Adım: Uygulamanızı kaydetme

  1. Microsoft Entra yönetim merkezinde en az Bulut Uygulaması Yönetici istrator olarak oturum açın.
  2. Birden çok kiracıya erişiminiz varsa, dizinler + abonelikler menüsünden uygulamayı kaydetmek istediğiniz kiracıya geçmek için üst menüdeki Ayarlar simgesini kullanın.
  3. Kimlik>Uygulamaları'na> göz atın Uygulama kayıtları ve Yeni kayıt'ı seçin.
  4. Ad alanına uygulamanız için bir ad girin. Örneğin, ASPNET-Hızlı Başlangıç girin. Uygulamanızın kullanıcıları bu adı görür ve daha sonra değiştirebilirsiniz.
  5. Yeniden Yönlendirme URI'sinin türünü Web ve değerini olarak https://localhost:44368/ayarlayın.
  6. Kaydet'i seçin.
  7. Yönet'in altında Kimlik Doğrulama'yı seçin.
  8. Örtük verme ve karma akışlar bölümünde Kimlik belirteçleri'ni seçin.
  9. Kaydet'i seçin.

2. Adım: Projeyi indirme

ASP.NET kod örneğini indirme

İ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.

3. Adım: Projeyi çalıştırma

  1. .zip dosyasını kök klasöre yakın bir yerel klasöre ayıklayın. Örneğin, C:\Azure-Samples dizinine ayıklayın.

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

  2. Çözümü Visual Studio'da açın (AppModelv2-WebApp-OpenID Bağlan-DotNet.sln).

  3. Visual Studio sürümüne bağlı olarak, AppModelv2-WebApp-OpenID Bağlan-DotNet projesine sağ tıklayıp NuGet paketlerini geri yükle'yi seçmeniz gerekebilir.

  4. Diğer Windows> Paket Yöneticisi Konsolunu Görüntüle'yi> seçerek Paket Yöneticisi Konsolunu açın. Ardından Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r komutunu çalıştırın.

  5. appsettings.json düzenleyin ve , Tenantve redirectUri parametrelerini ClientIdşununla değiştirin:

    "ClientId" :"Enter_the_Application_Id_here" />
    "TenantId": "Enter_the_Tenant_Info_Here" />
    "RedirectUri" :"https://localhost:44368/" />
    

    Bu kodda:

    • Enter_the_Application_Id_here , daha önce oluşturduğunuz uygulama kaydının uygulama (istemci) kimliğidir. Microsoft Entra yönetim merkezindeki Uygulama kayıtları uygulamanın Genel Bakış sayfasında uygulama (istemci) kimliğini bulun.
    • Enter_the_Tenant_Info_Here aşağıdaki seçeneklerden biridir:
      • Uygulamanız yalnızca Kuruluşum'un destekleniyorsa, bu değeri dizin (kiracı) kimliği veya kiracı adıyla (örneğin, contoso.onmicrosoft.com) değiştirin. Microsoft Entra yönetim merkezindeki Uygulama kayıtları uygulamanın Genel Bakış sayfasında dizin (kiracı) kimliğini bulun.
      • Uygulamanız herhangi bir kuruluş dizinindeki Hesapları destekliyorsa, bu değeri ile organizationsdeğiştirin.
      • Uygulamanız Tüm Microsoft hesabı kullanıcılarını destekliyorsa, bu değeri ile commondeğiştirin.
    • redirectUri, Microsoft Entra yönetim merkezindeki Uygulama kayıtları daha önce girdiğiniz Yeniden Yönlendirme URI'sidir.

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 ASP.NET uygulamasına nasıl oturum açma ekleneceğini anlamak için yararlı olabilir.

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

Web tarayıcısı, web uygulaması ve örnek uygulamadaki Microsoft kimlik platformu arasındaki etkileşimin diyagramı.

OWIN ara yazılımı NuGet paketleri

OWIN ara yazılım paketleriyle ASP.NET OpenID Bağlan kullanarak tanımlama bilgisi tabanlı kimlik doğrulaması ile kimlik doğrulama işlem hattını ayarlayabilirsiniz. Visual Studio'daki Paket Yöneticisi Konsolu'nda aşağıdaki komutları çalıştırarak bu paketleri yükleyebilirsiniz:

Install-Package Microsoft.Identity.Web.Owin
Install-Package Microsoft.Identity.Web.GraphServiceClient
Install-Package Microsoft.Owin.Security.Cookies

OWIN başlangıç sınıfı

OWIN ara yazılımı, barındırma işlemi başladığında çalışan bir başlangıç sınıfı kullanır. Bu hızlı başlangıçta, startup.cs dosyası kök klasördedir. Aşağıdaki kod, bu hızlı başlangıcın kullandığı parametreleri gösterir:

    public void Configuration(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());
        OwinTokenAcquirerFactory factory = TokenAcquirerFactory.GetDefaultInstance<OwinTokenAcquirerFactory>();

        app.AddMicrosoftIdentityWebApp(factory);
        factory.Services
            .Configure<ConfidentialClientApplicationOptions>(options => { options.RedirectUri = "https://localhost:44368/"; })
            .AddMicrosoftGraph()
            .AddInMemoryTokenCaches();
        factory.Build();
    }
Konumu Açıklama
ClientId Azure portalında kayıtlı uygulamanın uygulama kimliği.
Authority Kullanıcının kimlik doğrulaması için güvenlik belirteci hizmeti (STS) uç noktası. Genellikle https://login.microsoftonline.com/{tenant}/v2.0 genel bulut içindir. Bu URL'de {tenant}, kiracınızın adı, kiracı kimliğiniz veya common ortak uç nokta başvurusudur. (Ortak uç nokta, çok kiracılı uygulamalar için kullanılır.)
RedirectUri kullanıcıların Microsoft kimlik platformu karşı kimlik doğrulamasından sonra gönderildiği URL.
PostLogoutRedirectUri Kullanıcıların oturumu kapattıktan sonra gönderildiği URL.
Scope İstenmekte olan kapsamların listesi, boşluklarla ayrılmıştır.
ResponseType Kimlik doğrulamasından gelen yanıtın bir yetkilendirme kodu ve kimlik belirteci içermesi isteği.
TokenValidationParameters Belirteç doğrulaması için parametre listesi. Bu durumda, herhangi bir kişisel, ValidateIssuer iş veya okul hesabı türünden oturum açmayı kabul ettiğini belirtmek için olarak ayarlanır false .
Notifications İletilerde çalıştırılabilir OpenIdConnect temsilcilerin listesi.

Kimlik doğrulaması sınaması

Denetleyicinizde kimlik doğrulaması sınaması isteyerek kullanıcıyı oturum açmaya zorlayabilirsiniz:

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties{ RedirectUri = "/" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

İpucu

Bu yöntemi kullanarak kimlik doğrulama sınaması istemek isteğe bağlıdır. Bir görünümün hem kimliği doğrulanmış hem de kimliği doğrulanmamış kullanıcılardan erişilebilir olmasını istediğinizde normalde bunu kullanırsınız. Alternatif olarak, bir sonraki bölümde açıklanan yöntemle denetleyicileri koruyabilirsiniz.

Denetleyiciyi veya denetleyici eylemlerini korumaya yönelik öznitelik

Özniteliğini kullanarak bir denetleyiciyi veya denetleyici eylemlerini [Authorize] koruyabilirsiniz. Bu öznitelik, denetleyicideki eylemlere yalnızca kimliği doğrulanmış kullanıcıların erişmesine izin vererek denetleyiciye veya eylemlere erişimi kısıtlar. Kimlik doğrulaması sınaması, kimliği doğrulanmamış bir kullanıcı özniteliği tarafından [Authorize] düzenlenmiş eylemlerden veya denetleyicilerden birine erişmeye çalıştığında otomatik olarak gerçekleşir.

Denetleyiciden Microsoft Graph'ı çağırma

Aşağıdaki kodda olduğu gibi denetleyicideki uzantı yöntemini kullanarak GetGraphServiceClient GraphServiceClient örneğini alarak denetleyiciden Microsoft Graph'ı çağırabilirsiniz:

    try
    { 
        var me = await this.GetGraphServiceClient().Me.GetAsync();
        ViewBag.Username = me.DisplayName;
    }
    catch (ServiceException graphEx) when (graphEx.InnerException is MicrosoftIdentityWebChallengeUserException)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(OpenIdConnectAuthenticationDefaults.AuthenticationType);
        return View();
    }

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

Bu hızlı başlangıcın tam açıklaması da dahil olmak üzere uygulama ve yeni özellikler oluşturma hakkında tam adım adım kılavuz için ASP.NET öğreticisini deneyin.