Kullanıcılarda oturum açma web uygulaması: Kod yapılandırması

Web uygulamanızın kullanıcılarda oturum açma kodunu yapılandırmayı öğrenin.

Web uygulamalarını destekleyen Microsoft kitaplıkları

Aşağıdaki Microsoft kitaplıkları bir web uygulamasını (ve web API'sini) korumak için kullanılır:

Dil / çerçeve Proje açık
GitHub
Paket Alma
birini seçin
Oturum açma kullanıcıları Web API'lerine erişme Genel kullanıma açık (GA) veya
Genel önizleme1
.NET MSAL.NET Microsoft.Identity.Client Kitaplık, kullanıcı oturum açma işlemi için kimlik belirteci isteyemez. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. GA
.NET Microsoft.IdentityModel Microsoft.IdentityModel Kitaplık, kullanıcı oturum açma işlemi için kimlik belirteci isteyemez.2 Kitaplık, korumalı web API'leri için erişim belirteçleri isteyemez.2 GA
ASP.NET Core ASP.NET Core Microsoft.AspNetCore.Authentication Hızlı Başlangıç Kitaplık, kullanıcı oturum açma için kimlik belirteçleri isteyebilir. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyemez. GA
ASP.NET Core Microsoft.Identity.Web Microsoft.Identity.Web Hızlı Başlangıç Kitaplık, kullanıcı oturum açma için kimlik belirteçleri isteyebilir. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. GA
Java MSAL4J msal4j Hızlı Başlangıç Kitaplık, kullanıcı oturum açma için kimlik belirteçleri isteyebilir. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. GA
Spring spring-cloud-azure-starter-active-directory spring-cloud-azure-starter-active-directory Öğretici Kitaplık, kullanıcı oturum açma için kimlik belirteçleri isteyebilir. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. GA
Node.js MSAL Düğümü msal-node Hızlı Başlangıç Kitaplık, kullanıcı oturum açma için kimlik belirteçleri isteyebilir. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. GA
Python MSAL Python msal Kitaplık, kullanıcı oturum açma için kimlik belirteçleri isteyebilir. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. GA
Python Kimlik Kimlik Hızlı Başlangıç Kitaplık, kullanıcı oturum açma için kimlik belirteçleri isteyebilir. Kitaplık, korumalı web API'leri için erişim belirteçleri isteyebilir. --

(1)Çevrimiçi Hizmetler için Evrensel Lisans Koşulları, Genel önizlemedeki kitaplıklar için geçerlidir.

(2)Microsoft.IdentityModel kitaplığı yalnızca belirteçleri doğrular ; kimlik veya erişim belirteçleri isteyemez.

İlgilendiğiniz platforma karşılık gelen sekmeyi seçin:

Bu makaledeki kod parçacıkları ve aşağıdakiler ASP.NET Core web uygulaması artımlı öğreticisi 1. bölümden ayıklanır.

Tam uygulama ayrıntıları için bu öğreticiye başvurmak isteyebilirsiniz.

Yapılandırma dosyaları

Microsoft kimlik platformu kullanarak kullanıcılarda oturum açabilen web uygulamaları yapılandırma dosyaları aracılığıyla yapılandırılır. Bu dosyalar aşağıdaki değerleri belirtmelidir:

  • Örneğin uygulamanızın ulusal bulutlarda çalışmasını istiyorsanız bulut örneği . Farklı seçenekler şunlardır:
    • https://login.microsoftonline.com/ Azure genel bulutu için
    • https://login.microsoftonline.us/ Azure ABD kamu için
    • https://login.microsoftonline.de/ Microsoft Entra Germany için
    • https://login.partner.microsoftonline.cn/common 21Vianet tarafından işletilen Microsoft Entra China için
  • Kiracı kimliğindeki hedef kitle. Seçenekler, uygulamanızın tek kiracı mı yoksa çok kiracılı mı olduğuna bağlı olarak değişir.
    • Kuruluşunuzdaki kullanıcılarda oturum açmak için Azure portalından alınan kiracı GUID'i. Etki alanı adı da kullanabilirsiniz.
    • organizations herhangi bir iş veya okul hesabındaki kullanıcıları oturum açmak için
    • common herhangi bir iş veya okul hesabıyla veya Microsoft kişisel hesabıyla kullanıcıları oturum açmak için
    • consumers kullanıcıları yalnızca Microsoft kişisel hesabıyla oturum açmak için
  • Azure portalından kopyalanan uygulamanızın istemci kimliği

Ayrıca yetkiliye başvurular, örneğin ve kiracı kimliği değerlerinin birleştirilmiş olduğunu görebilirsiniz.

ASP.NET Core'da , bu ayarlar appsettings.json dosyasında, "Microsoft Entra Id" bölümünde bulunur.

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "[Enter the tenantId here]",

    // Client ID (application ID) obtained from the Azure portal
    "ClientId": "[Enter the Client Id here]",
    "CallbackPath": "/signin-oidc",
    "SignedOutCallbackPath": "/signout-oidc"
  }
}

ASP.NET Core'da başka bir dosya (properties\launch Ayarlar.json), uygulamanız ve çeşitli profiller için URL'yi (applicationUrl) ve TLS/SSL bağlantı noktasını (sslPort) içerir.

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:3110/",
      "sslPort": 44321
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "webApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:3110/"
    }
  }
}

Azure portalında, uygulamanızın Kimlik Doğrulama sayfasına kaydettiğiniz yeniden yönlendirme URL'lerinin bu URL'ler ile eşleşmesi gerekir. Önceki iki yapılandırma dosyası için bunlar olacaktır https://localhost:44321/signin-oidc. Nedeni şudur: applicationUrlhttp://localhost:3110, ancak sslPort belirtildi (44321). CallbackPath , /signin-oidciçinde tanımlandığı gibi şeklindedir appsettings.json.

Aynı şekilde, oturumu kapatma URI'si olarak https://localhost:44321/signout-oidcayarlanır.

Not

Olayı işlerken çakışmayı önlemek için SignedOutCallbackPath portala veya uygulamaya ayarlanmalıdır.

Başlatma kodu

Başlatma kodu farklılıkları platforma bağlıdır. ASP.NET Core ve ASP.NET için, kullanıcıların oturum açması OpenID Bağlan ara yazılımına devredilir. ASP.NET veya ASP.NET Core şablonu, Azure AD v1.0 uç noktası için web uygulamaları oluşturur. Bunları Microsoft kimlik platformu uyarlamak için bazı yapılandırmalar gereklidir.

ASP.NET Core web uygulamalarında (ve web API'lerinde), denetleyiciler veya denetleyici eylemleri üzerinde bir Authorize özniteliğiniz olduğundan uygulama korunur. Bu öznitelik, kullanıcının kimliğinin doğrulandığını denetler. .NET 6'nın yayımlanmasından önce kod başlatma Startup.cs dosyasındaydı. .NET 6 içeren yeni ASP.NET Core projeleri artık Startup.cs dosyası içermiyor. Onun yerini almak Program.cs dosyasıdır. Bu öğreticinin geri kalanı .NET 5 veya daha düşük sürümlerle ilgili.

Not

Microsoft.Identity.Web'i kullanan Microsoft kimlik platformu için yeni ASP.NET Core şablonlarıyla doğrudan başlamak isterseniz.NET 5.0 için proje şablonlarını içeren bir önizleme NuGet paketi indirebilirsiniz. Ardından, yüklendikten sonra doğrudan ASP.NET Core web uygulamalarının (MVC veya Blazor) örneğini oluşturabilirsiniz. Ayrıntılar için bkz . Microsoft.Identity.Web web uygulaması proje şablonları . Bu, sizin için aşağıdaki adımların tümünü gerçekleştireceği için en basit yaklaşımdır.

Projenizi Visual Studio'da veya veya kullanarak dotnet new mvc --auth SingleOrgdotnet new webapp --auth SingleOrggeçerli varsayılan ASP.NET Core web projesiyle başlatmayı tercih ederseniz aşağıdaki gibi bir kod görürsünüz:

 services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
         .AddAzureAD(options => Configuration.Bind("AzureAd", options));

Bu kod, Azure Active Directory v1.0 uygulaması oluşturmak için kullanılan eski Microsoft.AspNetCore.Authentication.AzureAD.UI NuGet paketini kullanır. Bu makalede, bu kodun yerini alan bir Microsoft kimlik platformu v2.0 uygulamasının nasıl oluşturulacağı açıklanmaktadır.

  1. Projenize Microsoft.Identity.Web ve Microsoft.Identity.Web.UI NuGet paketlerini ekleyin. Microsoft.AspNetCore.Authentication.AzureAD.UI Varsa NuGet paketini kaldırın.

  2. içindeki kodu ConfigureServices ve AddMicrosoftIdentityUI yöntemlerini kullanabilecek AddMicrosoftIdentityWebApp şekilde güncelleştirin.

    public class Startup
    {
     ...
     // This method gets called by the runtime. Use this method to add services to the container.
     public void ConfigureServices(IServiceCollection services)
     {
      services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
             .AddMicrosoftIdentityWebApp(Configuration, "AzureAd");
    
      services.AddRazorPages().AddMvcOptions(options =>
      {
       var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();
       options.Filters.Add(new AuthorizeFilter(policy));
      }).AddMicrosoftIdentityUI();
    
  3. Configure Startup.cs yönteminde ve app.MapControllers();çağrısıyla kimlik doğrulamasını app.UseAuthentication(); etkinleştirin.

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
     // more code here
     app.UseAuthentication();
     app.UseAuthorization();
    
     app.MapRazorPages();
     app.MapControllers();
     // more code here
    }
    

Bu kodda:

  • AddMicrosoftIdentityWebApp Uzantı yöntemi Microsoft.Identity.Web'de tanımlanır;

    • Yapılandırma dosyasını okumak için seçenekleri yapılandırıyor (burada "Microsoft Entra Id" bölümünden)
    • Yetkilinin Microsoft kimlik platformu olması için OpenID Bağlan seçeneklerini yapılandırılır.
    • Belirtecin verenini doğrular.
    • Ada karşılık gelen taleplerin kimlik belirtecindeki taleple preferred_username eşlendiğinden emin olun.
  • yapılandırma nesnesine ek olarak, çağırırken AddMicrosoftIdentityWebAppyapılandırma bölümünün adını belirtebilirsiniz. Varsayılan olarak değeridir AzureAd.

  • AddMicrosoftIdentityWebApp gelişmiş senaryolar için başka parametrelere sahiptir. Örneğin, OpenID Bağlan ara yazılım olaylarını izleme, kimlik doğrulaması işe yaramazsa web uygulamanızın sorunlarını gidermenize yardımcı olabilir. İsteğe bağlı parametresini subscribeToOpenIdConnectMiddlewareDiagnosticsEvents olarak true ayarlamak, HTTP yanıtından içindeki kullanıcının HttpContext.Userkimliğine ilerledikçe bilgilerin ASP.NET Core ara yazılımı kümesi tarafından nasıl işlendiğini gösterir.

  • AddMicrosoftIdentityUI Uzantı yöntemi Microsoft.Identity.Web.UI içinde tanımlanır. Oturum açma ve oturumu kapatma işlemlerini gerçekleştirmek için varsayılan bir denetleyici sağlar.

Microsoft.Identity.Web'in web uygulamaları oluşturmanıza nasıl olanak sağladığı hakkında daha fazla bilgi için bkz . microsoft-identity-web'de Web Apps.

Sonraki adımlar

Sonraki makalede oturum açmayı ve oturumu kapatmayı tetiklemeyi öğreneceksiniz.