2016-03-21 3 views
4

Ich entwickle UWP-Anwendung mit C# .net und es hat WCF-Dienst mit Windows-Authentifizierung aktiviert. Ich habe Probleme, die Standard-NetworkCredential zu übergeben, nachdem ich einen Service-Aufruf mit der Option Service-Referenz hinzufügen ausgeführt habe.So übergeben Sie Standardanmeldeinformationen in der Windows-Authentifizierung

Hier finden Sie meine Untersuchungen.

Wenn ich die richtigen Windows-Authentifizierungsdaten übergeben, funktioniert es wie erwartet.

var service = new ServiceReference.Service1Client(); 
service.ClientCredentials.Windows.ClientCredential =new NetworkCredential("pradeep","****"); 
var test = await service.GetDataAsync(1); 

aber wollte ich Standard-Netzwerk-Anmeldeinformationen übergeben, während meines Dienst mit METHIS

var service = new ServiceReference.Service1Client(); 
service.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials; 
var test = await service.GetDataAsync(1); 

ich auch unter Option versucht.

service.ClientCredentials.Windows.ClientCredential = (NetworkCredential)CredentialCache.DefaultCredentials; 

Wenn ich die Standard-Anmeldeinformationen übergeben. Ich komme unter Ausnahme.

Die HTTP-Anfrage ist nicht autorisiert mit Client-Authentifizierungsschema 'Verhandeln'. Der Authentifizierungsheader, der vom Server empfangen wurde, war 'Negotiate, NTLM'.

Ich testete gleichen Serviceaufruf mit Standard-NetworkCredential in WPF-Anwendung, die wie erwartet funktioniert.

Antwort

5

Um zuerst machen Sie bitte sicher, indem Sie mit den System.Net.CredentialCache.DefaultNetworkCredentials, die Standardanmeldeinformationen für den WCF Windows-Authentifizierung in UWP passieren, dass Sie die Enterprise Authentication und Private Networks hinzugefügt haben (Client & Server) Funktionen, wie folgend:

enter image description here

Für die Enterprise Authentication Fähigkeit, es ist becau Die Anmeldeinformationen für die Windows-Domäne ermöglichen es einem Benutzer, sich mit seinen Anmeldeinformationen bei Remote-Ressourcen anzumelden und sich so zu verhalten, als ob ein Benutzer seinen Benutzernamen und sein Kennwort angegeben hätte. Die spezielle Authentifizierung für Unternehmen wird in Branchenanwendungen verwendet, die eine Verbindung zu Servern innerhalb eines Unternehmens herstellen.

Für die Private Networks (Client & Server) Fähigkeit ist es, weil das zur Zeit in Windows-Runtime können wir nur die Standard-Anmeldeinformationen im Intranet übergeben. Für das Internet müssen wir den Benutzernamen und das Passwort als Anmeldedaten verwenden.

Weitere Informationen zu den Funktionen finden Sie unter: https://msdn.microsoft.com/en-us/library/windows/apps/hh464936.aspx.

Danach versuchen Sie, Computernamen oder Fully Qualified Computernamen anstelle der IP-Adresse für die WCF-Dienste wie folgt zu verwenden: http://YourComputerName:YourPortNumber/Service1.svc.

Zuletzt verwenden Sie bitte einen anderen Computer als Client zum Testen der WCF Windows-Authentifizierung in UWP mit dem System.Net.CredentialCache.DefaultNetworkCredentials, dann sollte es gut funktionieren.

Danke.

+0

Funktioniert gut Danke Fang :) –