2017-09-15 6 views
0

Ich verwende Windows-Authentifizierung für Active Directory auf meiner ASP.NET MVC-Website. Ich versuche jetzt, die Website zum Testen bereitzustellen, aber das Problem ist, dass ich die folgende Ausnahme bei der Anmeldung erhalten:Anmeldung fehlgeschlagen für Benutzer IIS APPPOOL WebExploit

Kann Datenbank "PrincipalServerDB" nicht durch die Anmeldung angefordert. Die Anmeldung ist fehlgeschlagen. Anmeldung fehlgeschlagen für Benutzer 'IIS APPPOOL \ WebExploit'.

Ich habe dieses Tutorial folgen Test zu implementieren: https://docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/deploying-to-iis

Und ich Authentifizierung wie hier beschrieben: http://tech.trailmax.info/2016/03/using-owin-and-active-directory-to-authenticate-users-in-asp-net-mvc-5-application/ die OWIN Authentifizierung verwendet.

Ich bin mir bewusst, dass meine Frage Verständnis fehlt, aber es ist, weil ich nicht verstehe, was vor sich geht. Ich habe versucht, die Schritte folgenden wie in diesem Beitrag https://stackoverflow.com/a/7698316/4714502 beschrieben, aber ich hatte schon ein Grant.sql Skript getan Zugang zu gewähren, wie folgt:

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool') 
BEGIN 
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
     FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
     DEFAULT_LANGUAGE=[us_english] 
    END 
    GO 
    CREATE USER [WebExploitUser] 
     FOR LOGIN [IIS APPPOOL\DefaultAppPool] 
    GO 
    EXEC sp_addrolemember 'db_owner', 'WebExploitUser' 
    GO 

Im ersten Tutorial sie sagen:

Wenn die Anwendung ausgeführt wird In IIS auf Ihrem Entwicklungscomputer greift die Anwendung mithilfe der Anmeldeinformationen des Standardanwendungspools auf die Datenbank zu. Die Anwendungspoolidentität ist jedoch standardmäßig nicht berechtigt, die Datenbanken zu öffnen. Sie müssen also ein Skript ausführen, um diese Berechtigung zu erteilen. In diesem Abschnitt erstellen Sie das Skript, das Sie später ausführen werden, um sicherzustellen, dass die Anwendung die Datenbanken bei der Ausführung in IIS öffnen kann.

Das bedeutet, es ist die Anwendung, die die Rechte hat? Nicht der tatsächliche Benutzer? Ich weiß nicht, wie ich das lösen soll ...

Wenn ich in SSMS nachschaue, zeigen die Autorisierungen in meinen PrincipalServerDB-Eigenschaften WebExploitUser wie definiert.

Hier ist mein Anwendungspool in IIS:

enter image description here

'Démarré' bedeutet begann in Französisch.

+1

Können Sie in IIS überprüfen, welche Benutzer verwendet wird, um die Application Pool laufen? Es sieht so aus, als wäre es das 'IIS APPPOOL \ WebExploit'. Wenn ja, liegt das Problem daran, dass Sie dem Konto 'IIS APPPOOL \ DefaultAppPool' Zugriff auf die Datenbank erteilt haben. Wenn nicht, ist etwas anderes nicht korrekt konfiguriert. –

+0

@Jan_V Ich habe beide in meinem App-Pool. Ich habe tatsächlich versucht, das Grant-Skript mit 'IIS APPPOOL \ DefaultAppPool' und' IIS APPPOOL \ WebExploit' auszuführen. Ich füge einen Screenshot meines App-Pools in IIS hinzu. –

Antwort

1

Wenn Sie den angegebenen Code ausgeführt haben, haben Sie den Benutzer in der Datenbank master erstellt, nicht in Ihrer Benutzerdatenbank. Sie sollten es also in der Benutzerdatenbank erstellen und es von master löschen.

So müssen Sie den folgenden Code ausführen:

use PrincipalServerDB; 
create user [IIS APPPOOL\WebExploit] from login [IIS APPPOOL\WebExploit]; 
EXEC sp_addrolemember 'db_owner', 'IIS APPPOOL\WebExploit'; 
+0

Ok, kann ich das direkt in SSMS tun? –

+0

Ja, natürlich können Sie es in SSMS ausführen – sepupic

+1

Ich aktualisierte meine Antwort mit Ihrem Code, um den Benutzer db_owner dieser db – sepupic

Verwandte Themen