Wie kann ich einstellen, ClientCredentials?
Ich versuche zu verbrauchen, einen WCF-Dienst:
Der config des Dienstes ist:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<netNamedPipeBinding>
<binding name="netNamedPipeEndpoint" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport protectionLevel="EncryptAndSign" />
</security>
</binding>
</netNamedPipeBinding>
<netTcpBinding>
<binding name="netTcpEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false"
transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10"
maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
maxReceivedMessageSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="None">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
<wsHttpBinding>
<binding name="wsHttpBindingConfiguration" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="None">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="net.tcp://webapppro-v11/FlightInfoWebService/FlightInfoService.svc"
binding="netTcpBinding" bindingConfiguration="netTcpEndpoint"
contract="FlightInfoService" name="netTcpEndpoint" />
<endpoint address="net.pipe://webapppro-v11/FlightInfoWebService/FlightInfoService.svc"
binding="netNamedPipeBinding" bindingConfiguration="netNamedPipeEndpoint"
contract="FlightInfoService" name="netNamedPipeEndpoint" />
<endpoint address="http://webapppro-v11/FlightInfoWebService/FlightInfoService.svc"
binding="wsHttpBinding" bindingConfiguration="wsHttpBindingConfiguration"
contract="FlightInfoService" name="wsHttpBindingConfiguration" />
</client>
</system.serviceModel>
</configuration>
Wenn ich versuche, den Kundendienst rufen:
public async void LoadCities()
{
_client = new FlightInfoServiceClient(Maquette_MyAirport_Win8.FlightService.FlightInfoServiceClient.EndpointConfiguration.wsHttpBindingConfiguration, "http://servuucs.fr/FlightInfoWebService/FlightInfoService.svc");
var citiesResponse = await _client.GetAllCitiesAsync(new BaseRequest());
var myCities = citiesResponse.Cities;
}
Ich diese Ausnahme abfangen:
FEHLER: UnAuthorizedAccess Beschreibung:Sie sind nicht berechtigt, Zugang zu diesem service
Wie kann ich meine ClientCredentials?
_client.ClientCredentials
Bitte posten Sie Ihre gesamte
<system.servicemodel/>
config. Auch bitte formatieren Sie es so, dass es lesbar ist. Verlassen Sie sich nicht auf die Gemeinschaft, um das formatieren. DankIch aktualisiert meine config, jede Anregung, bitte?
Überschrift und Beschreibung der Frage sind verschiedene
InformationsquelleAutor user1428798 | 2012-09-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als @Paciv bemerkte in einem Kommentar, Sie können dies tun, durch den code. Legen Sie mit der Eigenschaft ClientCredentials.Windows, so etwas wie dieses:
Einstellung der Anmeldeinformationen im code ist natürlich unklug. Wenn Sie nicht die Windows-Benutzer programmgesteuert wie oben, ich glaube, dass die Anmeldeinformationen des Benutzers ausgeführt, der client gesendet werden, über (die ist vielleicht eine typische situation?).
Beachten Sie, dass wenn Sie die Einstellung Anmeldeinformationen im code können Sie in der Tat suchen Benutzernamen-Authentifizierung.
Könnte sein. Aber es beantwortet deine Frage ("Wie kann ich einstellen, dass der client-Anmeldeinformationen?"), obwohl.
https://social.msdn.microsoft.com/Forums/vstudio/en-US/0aac0110-187e-4a00-a597-f15b768cf16c/passing-client-credentials-to-wcf-service
Ist das aus sicherheitssicht in Ordnung?
aus, dass meine Antwort ist 4 Jahre alt, -) ich bin mir nicht sicher, was du meinst. Sind diese beispielsweise Anmeldeinformationen in meiner Antwort sicher? Meine Güte Nein. Die SecureString-Einträge? NÖ. Ist es sicher zu fest Anmeldeinformationen im code? Wahrscheinlich nicht. Ist es sicher im Allgemeinen festlegen von Anmeldeinformationen mithilfe von code? Ich hoffe, dass so :D. Windows.ClientCredential sicher genug? Das hängt davon ab, Ihre Anforderungen und Ihr Kontext; nicht etwas, das können wir für Sie beantworten.
InformationsquelleAutor Jeroen