Aracılığıyla paylaş


Katana’da Windows Kimlik Doğrulamasını Etkinleştirme

Bu makalede Katana'da Windows Kimlik Doğrulaması'nın nasıl etkinleştirileceği gösterilmektedir. İki senaryo kapsar: Katana'yı barındırmak için IIS kullanma ve Özel bir işlemde Katana'yı kendi kendine barındırmak için HttpListener kullanma. Bu makaleyi gözden geçirdikleri için Barry Dorrans, David Matson ve Chris Ross'a teşekkürler.

Katana, Microsoft'un .NET için Açık Web Arabirimi olan OWIN uygulamasıdır. OWIN ve Katana'ya giriş yazısını buradan okuyabilirsiniz. OWIN mimarisinin çeşitli katmanları vardır:

  • Konak: OWIN işlem hattının çalıştırıldığı işlemi yönetir.
  • Sunucu: Bir ağ yuvası açar ve istekleri dinler.
  • Ara yazılım: HTTP isteğini ve yanıtını işler.

Katana şu anda her ikisi de Windows Tümleşik Kimlik Doğrulama'yı destekleyen iki sunucu sağlar:

  • Microsoft.Owin.Host.SystemWeb. ASP.NET işlem hattı ile IIS kullanır.
  • Microsoft.Owin.Host.HttpListener. System.Net.HttpListener kullanır. Katana kendi kendine barındırılırken bu sunucu şu anda varsayılan seçenektir.

Not

Katana şu anda Windows Kimlik Doğrulaması için OWIN ara yazılımı sağlamaz, çünkü bu işlevsellik sunucularda zaten kullanılabilir.

IIS'de Windows Kimlik Doğrulaması

Microsoft.Owin.Host.SystemWeb kullanarak IIS'de Windows Kimlik Doğrulamasını etkinleştirmeniz yeterlidir.

"Boş Web Uygulaması ASP.NET" proje şablonunu kullanarak yeni bir ASP.NET uygulaması oluşturarak başlayalım.

Örnek çizim

Ardından NuGet paketleri ekleyin. Araçlar menüsünde NuGet Paket Yöneticisi'ni ve ardından Paket Yöneticisi Konsolu'nu seçin. Paket Yöneticisi Konsolu penceresinde aşağıdaki komutu girin:

Install-Package Microsoft.Owin.Host.SystemWeb -pre

Şimdi aşağıdaki kodla adlı Startup bir sınıf ekleyin:

using Owin;

namespace KatanaWebHost
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.Run(context =>
            {
                context.Response.ContentType = "text/plain";
                return context.Response.WriteAsync("Hello World!");
            });
        }
    }
}

IIS üzerinde çalışan OWIN için bir "Merhaba dünya" uygulaması oluşturmak için ihtiyacınız olan tek şey bu. Uygulamada hata ayıklamak için F5’e basın. Tarayıcı penceresinde "Merhaba Dünya!" ifadesini görmeniz gerekir.

Çizim örneği

Daha sonra IIS Express'da Windows Kimlik Doğrulamasını etkinleştireceğiz. Görünüm menüsünde Özellikler'i seçin. Proje özelliklerini görüntülemek için Çözüm Gezgini proje adına tıklayın.

Özellikler penceresinde Anonim Kimlik Doğrulaması'nıDevre Dışı olarak ve Windows Kimlik Doğrulaması'nıEtkin olarak ayarlayın.

Kimlik doğrulamasını etkinleştirme, çizim örneği

Uygulamayı Visual Studio'dan çalıştırdığınızda IIS Express kullanıcının Windows kimlik bilgilerini gerektirir. Fiddler'ı veya başka bir HTTP hata ayıklama aracını kullanarak bunu görebilirsiniz. Örnek bir HTTP yanıtı aşağıda verilmiştir:

HTTP/1.1 401 Unauthorized
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
Date: Sun, 28 Jul 2013 07:28:51 GMT
Content-Length: 6062
Proxy-Support: Session-Based-Authentication

Bu yanıttaki WWW-Authenticate üst bilgileri, sunucunun Kerberos veya NTLM kullanan Negotiate protokollerini desteklediğini gösterir.

Daha sonra, uygulamayı bir sunucuya dağıtırken, bu sunucudaki IIS'de Windows Kimlik Doğrulamasını etkinleştirmek için bu adımları izleyin.

HttpListener'da Windows Kimlik Doğrulaması

Katana'yı kendi kendine barındırmak için Microsoft.Owin.Host.HttpListener kullanıyorsanız, Windows Kimlik Doğrulamasını doğrudan HttpListener örneğinde etkinleştirebilirsiniz.

İlk olarak yeni bir konsol uygulaması oluşturun. Ardından NuGet paketleri ekleyin. Araçlar menüsünde NuGet Paket Yöneticisi'ni ve ardından Paket Yöneticisi Konsolu'nu seçin. Paket Yöneticisi Konsolu penceresinde aşağıdaki komutu girin:

Install-Package Microsoft.Owin.SelfHost -Pre

Şimdi aşağıdaki kodla adlı Startup bir sınıf ekleyin:

using Owin;
using System.Net;

namespace KatanaSelfHost
{
    class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            HttpListener listener = 
                (HttpListener)app.Properties["System.Net.HttpListener"];
            listener.AuthenticationSchemes = 
                AuthenticationSchemes.IntegratedWindowsAuthentication;

            app.Run(context =>
            {
                context.Response.ContentType = "text/plain";
                return context.Response.WriteAsync("Hello World!");
            });
        }
    }
}

Bu sınıf öncekinden aynı "Merhaba dünya" örneğini uygular, ancak kimlik doğrulama şeması olarak Windows Kimlik Doğrulaması'nı da ayarlar.

işlevinin Main içinde OWIN işlem hattını başlatın:

using Microsoft.Owin.Hosting;
using System;

namespace KatanaSelfHost
{
    class Program
    {
        static void Main(string[] args)
        {
            using (WebApp.Start<Startup>("http://localhost:9000"))
            {
                Console.WriteLine("Press Enter to quit.");
                Console.ReadKey();
            }        
        }
    }
}

Fiddler'da uygulamanın Windows Kimlik Doğrulaması kullandığını onaylamak için bir istek gönderebilirsiniz:

HTTP/1.1 401 Unauthorized
Content-Length: 0
Server: Microsoft-HTTPAPI/2.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
Date: Sun, 28 Jul 2013 21:02:21 GMT
Proxy-Support: Session-Based-Authentication

Project Katana’ya Genel Bakış

System.Net.HttpListener

MVC 5'te OWIN Forms Kimlik Doğrulamasını Anlama