Sdílet prostřednictvím


Povolení ověřování systému Windows v sadě Katana

Tento článek ukazuje, jak povolit ověřování systému Windows v Kataně. Popisuje dva scénáře: použití služby IIS k hostování Katany a použití HttpListener k vlastnímu hostování Katany ve vlastním procesu. Děkujeme BarryMu Dorransovi, Davidu Matsonovi a Chrisi Rossovi za revizi tohoto článku.

Katana je implementace OWIN, otevřeného webového rozhraní pro .NET. Tady si můžete přečíst úvod do OWIN a Katany. Architektura OWIN má několik vrstev:

  • Hostitel: Spravuje proces, ve kterém se kanál OWIN spouští.
  • Server: Otevře síťový soket a naslouchá žádostem.
  • Middleware: Zpracuje požadavek HTTP a odpověď.

Katana v současné době poskytuje dva servery, z nichž oba podporují integrované ověřování systému Windows:

  • Microsoft.Owin.Host.SystemWeb. Používá službu IIS s kanálem ASP.NET.
  • Microsoft.Owin.Host.HttpListener. Používá System.Net.HttpListener. Tento server je v současné době výchozí možností při místním hostování Katany.

Poznámka

Katana v současné době neposkytuje middleware OWIN pro ověřování systému Windows, protože tato funkce je už na serverech dostupná.

Ověřování systému Windows ve službě IIS

Pomocí Microsoft.Owin.Host.SystemWeb můžete jednoduše povolit ověřování systému Windows ve službě IIS.

Začněme vytvořením nové aplikace ASP.NET pomocí šablony projektu "ASP.NET prázdná webová aplikace".

Příklad obrázku

Dále přidejte balíčky NuGet. V nabídce Nástroje vyberte Správce balíčků NuGet a pak vyberte Konzola Správce balíčků. V okně konzoly Správce balíčků zadejte následující příkaz:

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

Teď přidejte třídu s názvem Startup s následujícím kódem:

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

To je vše, co potřebujete k vytvoření aplikace "Hello world" pro OWIN, která běží ve službě IIS. Stisknutím klávesy F5 spusťte ladění aplikace. V okně prohlížeče by se měla zobrazit zpráva Hello World!.

Příklad s obrázkem

V dalším kroku povolíme Ověřování systému Windows v IIS Express. V nabídce Zobrazení vyberte Vlastnosti. Kliknutím na název projektu v Průzkumník řešení zobrazte vlastnosti projektu.

V okně Vlastnosti nastavte Anonymní ověřování na Zakázáno a Ověřování systému Windows na Povoleno.

Povolení ověřování, příklad

Když aplikaci spustíte ze sady Visual Studio, IIS Express bude vyžadovat přihlašovací údaje windows uživatele. Můžete to zjistit pomocí Nástroje Fiddler nebo jiného nástroje pro ladění HTTP. Tady je příklad odpovědi HTTP:

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

Hlavičky WWW-Authenticate v této odpovědi označují, že server podporuje protokol Negotiate , který používá protokol Kerberos nebo NTLM.

Později, až nasadíte aplikaci na server, podle těchto kroků povolte ověřování systému Windows ve službě IIS na daném serveru.

Ověřování systému Windows v httpListener

Pokud k vlastnímu hostování Katany používáte Microsoft.Owin.Host.HttpListener, můžete povolit ověřování systému Windows přímo v instanci HttpListener .

Nejprve vytvořte novou konzolovou aplikaci. Dále přidejte balíčky NuGet. V nabídce Nástroje vyberte Správce balíčků NuGet a pak vyberte Konzola Správce balíčků. V okně konzoly Správce balíčků zadejte následující příkaz:

Install-Package Microsoft.Owin.SelfHost -Pre

Teď přidejte třídu s názvem Startup s následujícím kódem:

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

Tato třída implementuje stejný příklad "Hello world" z dříve, ale také nastavuje ověřování systému Windows jako schéma ověřování.

Main Uvnitř funkce spusťte kanál OWIN:

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

V nástroji Fiddler můžete odeslat žádost o potvrzení, že aplikace používá ověřování systému Windows:

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

Přehled projektu Katana

System.Net.HttpListener

Principy ověřování formulářů OWIN v MVC 5