2009-04-26 15 views
3

Ich habe einen WCF-Webdienst, der derzeit über den WSHttpBinding-Endpunkt mit Transportsicherheit und Windows-Clientanmeldungs-Typ bedient wird. Der Dienst wird über IIS 5.1 gehostet, wobei SSL mit einem Zertifikat der Domänen-Zertifizierungsstelle konfiguriert wird. IIS selbst läuft mit der Identität von [email protected] auf einem Domänencomputer. Der anonyme Zugriff ist deaktiviert und die integrierte Windows-Authentifizierung ist die einzige Authentifizierungsmethode.Delegierung im WCF-Webdienst

Der Dienst verfügt über eine Methode, die den aktuellen Windows-Identitätsnamen und Identitätswechselebene zurückgibt. Für die Methode wurde der Identitätswechsel in OperationBehaviourAttribute auf Erforderlich gesetzt.

[OperationBehavior(Impersonation = ImpersonationOption.Required)] 
public IEnumerable<string> GetInformation() 
{ 
    WindowsIdentity identity = WindowsIdentity.GetCurrent(); 
    return new List<string>() 
    { 
     identity.Name, 
     identity.ImpersonationLevel.ToString() 
    }; 
} 

Ich erstelle den WCF-Kanal manuell im Client und erlaube die Delegierung für den Dienst.

Der Client ist ein vollständig vertrauenswürdiger XBAP, der mit einem Domänenzertifikat signiert ist, das in den Zertifikatsspeicher von Trusted Publishers verschoben wurde.

Der Host-Computer, [email protected] und [email protected] hat Delegierung zulassen in der Domäne eingerichtet und keiner der Benutzer ist als sensibel markiert. Das SeImpersonatePrivilege sollte nicht das Problem sein, da Identitätswechsel funktioniert.

Wenn der Client die Service-Methode aufruft, gibt die Methode "domain \ current" und "Impersonation" zurück. Was ich benötige ist "domain \ current" und "Delegation". Gemäß der zweiten Tabelle unter http://msdn.microsoft.com/en-us/library/ms730088.aspx würde dies bedeuten, dass der Client oder der Dienst nicht delegierbar ist.

Die Domäne verfügt über die Funktionsebene von Windows 2000 Mixed. Ich habe irgendwo gelesen, dass dies NTLM-Authentifizierung impliziert, aber ich glaube, dass sich auf den Verkehr zwischen Domänencontrollern bezogen. Wenn wir nicht über https laufen, zeigt Wireshark supportedMech: 1.2.840.48018.1.2.2 (MS KRB5 - Microsoft Kerberos 5) in der HTTP-Antwort an, so scheint es, dass Kerberos aktiviert ist.

Technisch könnten wir den Funktionslevel bis Windows 2003 erhöhen, da die beiden Domänencontroller beide W2K3-Server sind, aber die IT-Abteilung kann derzeit keine Ressourcen für die Sicherungsoperationen zuweisen, bevor sie gehen und heben das funktionale Niveau an.

Wir haben eine virtuelle Testdomäne, die auf eine funktionale Ebene von Windows Server 2003 aktualisiert werden konnte, aber diese Domäne fehlt Zertifizierungsstelle oder Clientcomputer mit IIS installiert, während die Funktionsebene zu Testzwecken ausgelöst werden konnte, Einrichten Der Rest der Infrastruktur ist ziemlich viel Arbeit.

Dies ist ein Problem, das ich seit einiger Zeit nicht lösen konnte. Das Web scheint voller Artikel zu sein, aber ich hatte kein Glück damit. Irgendwelche Ideen was ist falsch?

Antwort

0

Führen Sie den XBAP und den Dienst auf demselben IIS-Host aus?

Wenn ich es richtig verstehe - Sie haben: Client-> XBAP-> WCF.

Der Client verbindet sich mit dem auf IIS gehosteten XBAP. Dies kann über Kerberos authentifizieren und Sie scheinen darauf hinzuweisen.

Der zweite Hop ist dann XBAP Verbindung mit dem WCF-Dienst. Wenn diese beiden auf demselben IIS-Host gehostet werden, wird Kerberos nicht versucht und NTLM wird verwendet. Kerberos wird nur versucht, wenn die WCF auf einem anderen Host-Computer ist.

Wenn Sie XBAP und WCF in separaten Boxen gehostet haben, dann haben Sie eine klassische Kerberos über die 2. Hop-Authentifizierung eingerichtet und jeder der "Das ist, wie Sie es tun" Art von Artikeln sollte es erklären.

(Ich weiß, diese Frage vor einiger Zeit war - aber ich habe festgestellt, nur es vor kurzem und erst seit kurzem Kerberos und 2-Hop-Probleme zu verstehen.)

+0

Das zugrunde liegende Problem vor einiger Zeit beschlossen wurde. Das Szenario hier mit XBAPs sollte der einfachste Weg sein, den Mangel an Authentifizierung zu reproduzieren, also habe ich dieses Setup verloren und kann nicht testen, was damit schief gelaufen ist. Aber jetzt bin ich neugierig auf den XBAP gehostet auf IIS Teil: Der Ursprung der XBAP Angelegenheiten, sogar für voll vertrauenswürdige XBAPs? Ich gebe zu, ich habe nicht zu weit in sie hineingeschaut, aber ich nahm an, dass sie sich benahmen wie jede eigenständige .Net-Anwendung, wenn es um Netzwerke ging. –

Verwandte Themen