Ich möchte Remoteadministratoren (mit lokalen oder Domänenanmeldeinformationen) meinen Windows-Dienst über eine WCF-TCP-Bindung steuern lassen. Dazu muss ich den Remotebenutzer als Administrator authentifizieren. Ich kann die Hauptbenutzer/Rollen überprüfen, aber ich weiß nicht, wie ich den entfernten Benutzer nach den korrekten Benutzerdetails/Token fragen soll.Eingeschränkter Remote-WCF-Dienst: Windows-Authentifizierungsaufforderung
Dies ist mit meiner vorherigen Frage auf Restricting WCF TCP endpoint to Administrators verwandt. Statt [PrincipalPermission(SecurityAction.Demand, Role = "Administrator")]
meiner eingeschränkten Service-Methode des Hinzufügens und SecurityException
fangen, so scheint es, ich kann es überprüfen:
if (!System.Threading.Thread.CurrentPrincipal.IsInRole("Administrators"))
return MethodResult.AccessDenied;
// haven't tested if it's the service thread or the remote user yet.
Wie kann ich den Remote-Benutzer für die Windows-Authentifizierung fragt, ob ein Zugriff verweigert Ergebnis zurückgegeben wurde, so kann ich die Verbindung als ein anderes Prinzip neu initiieren?
Natürlich müsste die Änderung auf der Client-Anwendung des Remote-Benutzers vorgenommen werden. Vielleicht gibt es eine sauberere WCF-Möglichkeit, es zu tun?
Edit: Suche nach ".net Identitätswechsel" führte mich zu this auf Codeproject. Ich hatte keine Gelegenheit zu schauen, aber das könnte der richtige Weg sein.
Danke. [Diese Frage] (http://stackoverflow.com/questions/1596161/how-to-show-authentication-dialog-in-cre-net-3-5-sp1) bietet eine native Eingabeaufforderung, wenn auch mit einem alten Aussehen. –