Hızlı Başlangıç: ASP.NET Core web uygulamasında kullanıcılarla oturum açma

Bu hızlı başlangıçta, Microsoft.Identity.Web kullanarak Microsoft Entra ID ile oturum açan kullanıcılar için bir ASP.NET Core web uygulaması oluşturacaksınız. Şablondan yeni bir projenin iskelesini oluşturabilir veya mevcut bir uygulamaya kimlik doğrulaması ekleyebilirsiniz.

Microsoft Entra kiracınız yoksa, başlamadan önce bir ücretsiz hesap oluşturun.

Önkoşullar

Şablondan proje oluşturma

Kullanmaya başlamanın en hızlı yolu, önceden yapılandırılmış kimlik doğrulamasıyla yeni bir projenin iskelesini oluşturmaktır.

Tek kuruluşlu kimlik doğrulamasıyla yeni bir web uygulaması oluşturmak ve proje dizinine gitmek için aşağıdaki komutları çalıştırın:

dotnet new webapp --auth SingleOrg --name MyWebApp
cd MyWebApp

Şablon, Microsoft.Identity.Web'ün zaten yapılandırıldığı bir proje oluşturur. Yalnızca uygulama kayıt bilgilerinizi sağlamanız gerekir.

Yer tutucu değerlerini açın appsettings.json ve uygulama kaydınızdaki Uygulama (istemci) kimliği ve Dizin (kiracı) kimliği ile değiştirin:

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "your-tenant-id",
    "ClientId": "your-client-id",
    "CallbackPath": "/signin-oidc"
  }
}

Oturum açma işleminin çalıştığını doğrulamak için uygulamayı başlatın:

dotnet run

https://localhost:5001 Adresine gidin ve Oturum aç'ı seçin. Microsoft oturum açma istemi görüntülenirse yapılandırma doğru olur.

Mevcut bir web uygulamasına kimlik doğrulaması ekleme

Mevcut bir ASP.NET Core uygulamanız varsa, Microsoft Entra oturum açma eklemek için bu adımları izleyin.

NuGet paketlerini yükleme

Microsoft.Identity.Web kitaplıklarını ekleyin. Microsoft.Identity.Web paketi kimlik doğrulamasını işler ve Microsoft.Identity.Web.UI önceden oluşturulmuş oturum açma ve oturumu kapatma kullanıcı arabirimi bileşenleri sağlar:

dotnet add package Microsoft.Identity.Web
dotnet add package Microsoft.Identity.Web.UI

Kimlik doğrulama hizmetlerini yapılandırma

Program.cs öğesini açın ve kimlik doğrulama hizmetlerini ekleyin. Aşağıdaki kod OpenID Connect kimlik doğrulamasını Microsoft Entra ile kaydeder, aşağı akış API çağrıları için belirteç almayı etkinleştirir ve oturum açma/oturum kapatma kullanıcı arabirimini ekler:

using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;

var builder = WebApplication.CreateBuilder(args);

// Add authentication
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
                .AddMicrosoftIdentityWebApp(builder.Configuration, "AzureAd")
                .EnableTokenAcquisitionToCallDownstreamApi() // Optional: if calling APIs
                .AddInMemoryTokenCaches(); // For production, use distributed cache

// Add Razor Pages or MVC
builder.Services.AddRazorPages()
    .AddMicrosoftIdentityUI(); // Adds sign-in/sign-out UI

var app = builder.Build();

// Configure middleware
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();

app.UseAuthentication(); //  Add authentication middleware
app.UseAuthorization();

app.MapRazorPages();
app.MapControllers();

app.Run();

Microsoft Entra yapılandırması ekleme

appsettings.json öğesini açın ve AzureAd bölümünü ekleyin. Yer tutucu değerlerini uygulama kaydınızın Uygulama (istemci) kimliğiyle değiştirin. Uygulamanız için uygun hedef kitleye ayarlayın TenantId :

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "common",
    "ClientId": "your-client-id-from-app-registration",
    "CallbackPath": "/signin-oidc"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.Identity.Web": "Information"
    }
  }
}

TenantId Değeri, hangi hesapların oturum açabileceğini belirler:

Değer Kabul edilen hesaplar
common İş/okul ve kişisel Microsoft hesapları
organizations Yalnızca iş/okul hesapları
consumers Yalnızca kişisel Microsoft hesapları
<your-tenant-id> Tek kiracılı — yalnızca kuruluşunuz

Sayfalarınızı koruma

Özniteliği, [Authorize] oturum açma gerektiren sayfalara veya denetleyicilere ekleyin.

Razor Pages için [Authorize] özniteliği kimliği doğrulanmamış kullanıcıları oturum açma sayfasına yönlendirir. Oturum açıldıktan sonra, kullanıcı talepleri Name ve preferred_username gibi User nesnesi aracılığıyla kullanılabilir.

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.RazorPages;

[Authorize] //  Require authentication
public class IndexModel : PageModel
{
    public void OnGet()
    {
        var userName = User.Identity?.Name;
        var userEmail = User.FindFirst("preferred_username")?.Value;
    }
}

MVC denetleyicileri için aynı [Authorize] öznitelik denetleyici veya eylem düzeyinde geçerlidir:

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

[Authorize] //  Require authentication
public class HomeController : Controller
{
    public IActionResult Index()
    {
        var userName = User.Identity?.Name;
        return View();
    }
}

Kullanıcıların oturum açıp kapatabilmesi için düzeninize gezinti bağlantıları ekleyin. MicrosoftIdentity alan yolları Microsoft.Identity.Web.UI paketi tarafından sağlanır. Aşağıdaki Razor işaretlemesi, kullanıcının kimlik doğrulama durumuna göre Oturumu kapat veya Oturum aç'ı koşullu olarak işler:

<ul class="navbar-nav">
    @if (User.Identity?.IsAuthenticated == true)
    {
        <li class="nav-item">
            <span class="nav-link">Hello @User.Identity.Name!</span>
        </li>
        <li class="nav-item">
            <a class="nav-link" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
        </li>
    }
    else
    {
        <li class="nav-item">
            <a class="nav-link" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a>
        </li>
    }
</ul>

Çalıştırma ve test

Kimlik doğrulamasının çalıştığını doğrulamak için uygulamayı başlatın:

dotnet run

https://localhost:5001 adresine gidin. Oturum aç bağlantısını görmeniz gerekir. Microsoft oturum açma akışının başarıyla tamamlandığını onaylamak için seçin.

Uygulamanızı kaydedin

Henüz bir uygulama kaydınız yoksa, Azure portalında bir uygulama kaydı oluşturmak için bu adımları izleyin.

  1. Azure portalında oturum açın.
  2. Microsoft Entra Id>Uygulama kayıtları>Yeni kayıt'a gidin.
  3. Bir görünen ad girin (örneğin, "Web Uygulamam").
  4. Desteklenen hesap türlerini seçin:
    • Tek kiracı — Yalnızca kuruluşunuzdaki kullanıcılar
    • Çok kiracılı — Herhangi bir organizasyondaki kullanıcılar
    • Multi-tenant + personal — Tüm Microsoft hesapları
  5. Yeniden Yönlendirme URI'sinin altında platformu Web olarak ayarlayın ve girinhttps://localhost:5001/signin-oidc.
  6. Kaydıseçin.
  7. Genel bakış sayfasında Uygulama (istemci) kimliğini ve Dizin (kiracı) kimliğini kopyalayın. Bu değerlere appsettings.json içindeki ClientId ve TenantId alanları için ihtiyacınız vardır.

İsteğe bağlı ayarları yapılandırma

Senaryonuz bu ek ayarları gerektirebilir.

Kimlik belirteci verme özelliğini etkinleştirme — Bazı karma kimlik doğrulama senaryoları kimlik belirteçlerinin doğrudan yetkilendirme uç noktasından verilmesini gerektirir. Yetkilendirme kodu akışı (Microsoft.Identity.Web tarafından kullanılır) önerilen yaklaşımdır. Bu ayarı yalnızca senaryonuz özel olarak gerektiriyorsa etkinleştirin:

  1. Uygulama kaydınızda Kimlik Doğrulaması'na gidin.
  2. Örtük yetkilendirme ve karma akışlar altında Kimlik belirteçlerini seçin.
  3. Kaydetseçeneğini seçin.

Note

Örtük yetki akışı eski bir akıştır. Microsoft, tüm yeni uygulamalar için PKCE ile yetkilendirme kodu akışını önerir. Daha fazla bilgi için Microsoft kimlik platformu belgelerine bakın.

Ön kanal çıkış URL’si yapılandırın — Kullanıcılar, Microsoft Entra'dan çıktıklarında uygulamanızda da oturumlarının kapandığından emin olun:

  1. Uygulama kaydınızda Kimlik Doğrulaması'na gidin.
  2. Ön kanal oturumu kapatma URL'si altına şunu girin: https://localhost:5001/signout-oidc.
  3. Kaydetseçeneğini seçin.

Sık karşılaşılan hataları giderme

Oturum açma sırasında sorunlarla karşılaşırsanız bu yaygın hataları denetleyin.

Error Nedeni Çözüm
AADSTS50011: Kayıtlı yanıt adresi yok Kod ve uygulama kayıt bilgisi arasında yeniden yönlendirme URI uyuşmazlığı Uygulama kaydınızdaki yeniden yönlendirme URI'sinin (CallbackPathvarsayılan olarak) eşleştiğinden /signin-oidc emin olun
AADSTS700016: Uygulama bulunamadı Yapılandırmada hatalı ClientId içindeki appsettings.json uygulama kaydınızla eşleşdiğini onaylayın
Yetkili yapılandırma hatası Eksik veya geçersiz Instance veya TenantId Instance olarak ayarlayın https://login.microsoftonline.com/ ve geçerli olduğunu onaylayın TenantId