it-swarm.com.de

Ausführen einer selbst gehosteten OWIN-Web-API unter einem Konto ohne Administratorberechtigung

Kann eine selbst gehostete OWIN-Web-API unter einem Konto ohne Administratorberechtigung ausgeführt werden? Ich habe bereits Dutzende von URL-Reservierungen ausprobiert und nichts funktioniert. Der Dienst kann nicht mit "Zugriff verweigert" gestartet werden. Es funktioniert, wenn das Konto der Administratorrolle hinzugefügt wird, aber ich möchte das nicht. Der folgende Code wird unter Win 7 Framework 4.5.2 ausgeführt. 

//install-package Microsoft.owin.hosting
//install-package Microsoft.Owin.Host.HttpListener

StartOptions options = new StartOptions();
options.Urls.Add("http://localhost:5000/");
//options.Urls.Add(string.Format("http://{0}:5000", Environment.MachineName));
//options.Urls.Add("http://+:5000/");
//options.Urls.Add("http://*:5000/");

using (WebApp.Start<WebAPISelfHostMinimal.Startup>(options))
{
    while (!Terminate)
    {
        await Task.Delay(10); //keep cpu from getting pegged
    }

    LogUtil.LogInfo("Terminating owin Host.");
}

EDIT- läuft unter einem Windows-Konto.

C:\>netsh http add urlacl http://+:5000/ user=mini2012\svcAPI

URL reservation successfully added

C:\>sc start apiservice
[SC] StartService FAILED 5:

Access is denied.

C:\>netsh http add urlacl http://*:5000/ user=mini2012\svcAPI

URL reservation successfully added

C:\>sc start apiservice
[SC] StartService FAILED 5:

Access is denied.

C:\>netsh http add urlacl http://localhost:5000/ user=mini2012\svcAPI

URL reservation successfully added

C:\>sc start apiservice
[SC] StartService FAILED 5:

Access is denied.
37
Colin Superdog

Es sieht so aus, als ob das Problem bei der URL-Reservierung lag. Ich brauchte keinen. Bei einer URL-Reservierung wird der owin Host nur mit dem Fehler "Zugriff verweigert" gestartet. Außerdem ist der Standardport für owin Host 5000. Wenn an diesem Port noch ein "toter" Prozess ausgeführt wird, wird der Start des Diensts blockiert. Zur Überprüfung können Sie an der Eingabeaufforderung netstat -a -b ausführen. 

15
Colin Superdog

Ihr Dienst wird (höchstwahrscheinlich) unter dem lokalen Systemkonto (SYSTEM) ausgeführt. Dieses Konto gehört nicht zum Sicherheitsprinzip "Jeder". 

Um dies zu beheben, nehmen Sie entweder die Reservierung des Namensraums für die anonyme Anmeldung vor oder ändern Sie Ihren Dienst so, dass er unter dem Netzwerkdienstkonto ausgeführt wird, das sich zufällig im Prinzip "Jeder" befindet. 

Die dritte Option besteht natürlich darin, einen neuen lokalen/Domänenbenutzer zu erstellen, die Reservierung für diesen Benutzer zu erstellen und den Dienst unter diesem Konto auszuführen. Aber dann müssten Sie sich sorgen, ob Sie die richtigen Sicherheitsberechtigungen festlegen. Ich würde also eine der ersten beiden Optionen wählen. 

5
Marcel N.

Für jemanden, der nach einer Lösung sucht und den Text nicht gelesen hat.

Die Lösung besteht darin, Visual Studio als Administrator auszuführen.

3
Mo D Genesis

Führen Sie diese Befehlszeile unter admin aus

netsh http add urlacl url = http: // *: 8080/user = meinUser

0
Sergii Lebid