Auf meinem Windows Server 2008-Server wird eine ASP.net-Anwendung gehostet, die Identitätswechsel verwendet. Die Anwendung funktioniert, solange der Benutzer, dessen Identität angenommen wird, am Server angemeldet bleibt. Wenn sich der Benutzer jedoch abmeldet, können die Clients die Webseiten nicht mehr anzeigen. Stattdessen wird eine kryptische Fehlermeldung angezeigt.
Wie kann ich den Server so konfigurieren, dass er funktioniert, ohne dass der imitierte Benutzer angemeldet bleibt? Vielen Dank im Voraus.
Antwort1
Ich habe das Problem und die Lösung gefunden.
Problem:
Der Webdienst verwendet ein X509Certificate2-Zertifikat. Die Konstruktoren der Klasse X509Certificate2 versuchen, das Zertifikat in das Benutzerprofil des Benutzerkontos zu importieren, unter dem die Anwendung ausgeführt wird. Häufig geben sich ASP.NET- und COM+-Anwendungen als Clients aus. In diesem Fall laden sie aus Leistungsgründen die Benutzerprofile für den imitierten Benutzer nicht. Sie können daher nicht auf den Zertifikatspeicher „Benutzer“ für den imitierten Benutzer zugreifen.
Derselbe Code funktioniert, wenn er von einer interaktiven Anwendung oder einem Windows-Dienst ausgeführt wird, der unter einem Benutzerkonto läuft, da das Profil geladen wird, wenn der Benutzer angemeldet ist oder der Dienst gestartet wird.
Lösung:
Ein Administrator auf dem Computer, auf dem die ASP.NET/COM+-Anwendung ausgeführt wird, sollte das Zertifikat im Zertifikatspeicher des Computers installieren, der als Speicher „Lokaler Computer“ bezeichnet wird. Dies sollte erfolgen, wenn die ASP.NET/COM+-Anwendung installiert wird.
Der Administrator sollte die Berechtigungen für den privaten Schlüssel festlegen, der dem Zertifikat zugeordnet ist, um dem ASP.NET-Prozess und den imitierten Benutzern Zugriff auf den Schlüssel zu gewähren. Dies ist erforderlich, da nur das Benutzerkonto, das das Zertifikat oder den privaten Schlüssel im Speicher „Lokaler Computer“ installiert, später den privaten RSA-Schlüssel verwenden kann, der dem Zertifikat zugeordnet ist. Verwenden Sie WinHttpCertCfg.exe, das in den Windows Resource Kit Tools verfügbar ist (http://msdn2.microsoft.com/en-us/library/aa384088.aspx(http://msdn2.microsoft.com/en-us/library/aa384088.aspx) ), um die Berechtigungen zu konfigurieren.
Der ASP.NET/COM+-Anwendungscode sollte das installierte Zertifikat verwenden, anstatt zu versuchen, eines aus einer PFX-Datei zu installieren. Lassen Sie den Code das installierte Zertifikat mithilfe der X509Store-Klasse suchen.
Sehenhttp://support.microsoft.com/kb/948154für mehr Informationen.