Freigeben über


Aktivieren der Windows-Authentifizierung in Katana

In diesem Artikel erfahren Sie, wie Sie die Windows-Authentifizierung in Katana aktivieren. Es umfasst zwei Szenarien: Verwenden von IIS zum Hosten von Katana und Verwendung von HttpListener zum Selbsthosting von Katana in einem benutzerdefinierten Prozess. Vielen Dank an Barry Dorrans, David Matson und Chris Ross für die Überprüfung dieses Artikels.

Katana ist Microsofts Implementierung von OWIN, dem Open Web Interface für .NET. Eine Einführung zu OWIN und Katana finden Sie hier. Die OWIN-Architektur verfügt über mehrere Ebenen:

  • Host: Verwaltet den Prozess, in dem die OWIN-Pipeline ausgeführt wird.
  • Server: Öffnet einen Netzwerksocket und lauscht auf Anforderungen.
  • Middleware: Verarbeitet die HTTP-Anforderung und -Antwort.

Katana bietet derzeit zwei Server, die beide die integrierte Windows-Authentifizierung unterstützen:

  • Microsoft.Owin.Host.SystemWeb. Verwendet IIS mit der ASP.NET-Pipeline.
  • Microsoft.Owin.Host.HttpListener. Verwendet System.Net.HttpListener. Dieser Server ist derzeit die Standardoption beim Selbsthosting von Katana.

Hinweis

Katana stellt derzeit keine OWIN-Middleware für die Windows-Authentifizierung bereit, da diese Funktionalität bereits auf den Servern verfügbar ist.

Windows-Authentifizierung in IIS

Mit Microsoft.Owin.Host.SystemWeb können Sie die Windows-Authentifizierung einfach in IIS aktivieren.

Beginnen wir mit dem Erstellen einer neuen ASP.NET-Anwendung mithilfe der Projektvorlage "ASP.NET Leere Webanwendung".

Beispieldarstellung

Fügen Sie als Nächstes NuGet-Pakete hinzu. Wählen Sie im Menü Extrasdie Option NuGet-Paket-Manager und dann Paket-Manager-Konsole aus. Geben Sie im Fenster Paket-Manager-Konsole den folgenden Befehl ein:

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

Fügen Sie nun eine Klasse namens mit Startup dem folgenden Code hinzu:

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!");
            });
        }
    }
}

Das ist alles, was Sie benötigen, um eine "Hello world"-Anwendung für OWIN zu erstellen, die unter IIS ausgeführt wird. Drücken Sie F5, um die Anwendung zu debuggen. Im Browserfenster sollte "Hallo Welt!" angezeigt werden.

Abbildungsbeispiel

Als Nächstes aktivieren wir die Windows-Authentifizierung in IIS Express. Wählen Sie im Menü Ansichtdie Option Eigenschaften aus. Klicken Sie auf den Projektnamen in Projektmappen-Explorer, um die Projekteigenschaften anzuzeigen.

Legen Sie im Eigenschaftenfensteranonyme Authentifizierung auf Deaktiviert fest, und legen Sie Windows-Authentifizierung auf Aktiviert fest.

Aktivieren der Authentifizierung, Beispiel

Wenn Sie die Anwendung in Visual Studio ausführen, benötigen IIS Express die Windows-Anmeldeinformationen des Benutzers. Sie können dies mithilfe von Fiddler oder einem anderen HTTP-Debugtool anzeigen. Hier sehen Sie eine BEISPIEL-HTTP-Antwort:

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

Die WWW-Authenticate Header in dieser Antwort geben an, dass der Server das Negotiate-Protokoll unterstützt, das entweder Kerberos oder NTLM verwendet.

Wenn Sie die Anwendung später auf einem Server bereitstellen, führen Sie die folgenden Schritte aus, um die Windows-Authentifizierung in IIS auf diesem Server zu aktivieren.

Windows-Authentifizierung in HttpListener

Wenn Sie Microsoft.Owin.Host.HttpListener verwenden, um Katana selbst zu hosten, können Sie die Windows-Authentifizierung direkt auf dem HttpListener-instance aktivieren.

Erstellen Sie zunächst eine neue Konsolenanwendung. Fügen Sie als Nächstes NuGet-Pakete hinzu. Wählen Sie im Menü Extrasdie Option NuGet-Paket-Manager und dann Paket-Manager-Konsole aus. Geben Sie im Fenster Paket-Manager-Konsole den folgenden Befehl ein:

Install-Package Microsoft.Owin.SelfHost -Pre

Fügen Sie nun eine Klasse namens mit Startup dem folgenden Code hinzu:

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!");
            });
        }
    }
}

Diese Klasse implementiert dasselbe "Hello world"-Beispiel von zuvor, legt aber auch die Windows-Authentifizierung als Authentifizierungsschema fest.

Starten Sie in der Main Funktion die OWIN-Pipeline:

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();
            }        
        }
    }
}

Sie können eine Anforderung in Fiddler senden, um zu bestätigen, dass die Anwendung die Windows-Authentifizierung verwendet:

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

Übersicht über das Katana-Projekt

System.Net.HttpListener

Grundlegendes zur OWIN-Formularauthentifizierung in MVC 5