Zum Inhalt springen

WCF Message security mit netTcpBinding


Guybrush Threepwood

Empfohlene Beiträge

Ich hab einen WCF Service der ein netTcpBinding mit Message security verwenden soll und eine eigene Benutzername/Kennwort authentifizierung ermöglichen soll.

Nachdem ich mich durch die verschiedensten Fehlermeldungen durchgehangelt hab bekomme ich jetzt nur noch folgenden Fehler

An unsecured or incorrectly secured fault was received from the other party. See the inner FaultException for the fault code and detail.

Inner Exception: An error occurred when verifying security for the message.

Leider hab ich durch googlen noch nichts hilfreiches dazu gefunden und bin ziemlich ratlos.

Kann da jemand was zu sagen?

Hier mal die app.config vom Server und Client

Server

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

<system.web>
<compilation debug="true" />
</system.web>
<!-- Bei der Bereitstellung des Dienstbibliothekprojekts muss der Inhalt der Konfigurationsdatei der app.config-Datei
des Hosts hinzugefügt werden. System.Configuration unterstützt keine Konfigurationsdateien für Bibliotheken. -->
<system.serviceModel>
<services>
<service behaviorConfiguration="tcpBehavior"
name="PAService.MyService">
<endpoint address=""
binding="netTcpBinding"
bindingConfiguration="Binding1"
contract="PAService.IMyService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex"
binding="mexTcpBinding"
bindingConfiguration=""
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:36001/MyService" />
</baseAddresses>
</host>
</service>
</services>

<bindings>
<netTcpBinding>
<binding name="Binding1">
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</netTcpBinding>
</bindings>

<behaviors>
<serviceBehaviors>
<behavior name="tcpBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceCredentials>
<!--
The serviceCredentials behavior allows one to specify a custom validator for username/password combinations.
-->
<userNameAuthentication
userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="PAService.PAUserValidator, PAService"/>
<!--
The serviceCredentials behavior allows one to define a service certificate.
A service certificate is used by a client to authenticate the service and provide message protection.
This configuration references the "localhost" certificate installed during the setup instructions.
-->
<serviceCertificate
findValue="localhost"
storeLocation="CurrentUser"
storeName="My"
x509FindType="FindBySubjectName"/>
<clientCertificate>
<certificate
findValue="localhost"
storeLocation="CurrentUser"
storeName="My"
x509FindType="FindBySubjectName"/>
</clientCertificate>

</serviceCredentials>

</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

</configuration>
[/PHP]

Client:

[PHP]<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>

<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_IMyServiceService">
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://localhost:36001/MyService"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IMy"
contract="MyService.IMyService" name="NetTcpBinding_IMyService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>

Link zu diesem Kommentar
Auf anderen Seiten teilen

So Problem gelöst.

Die oben genannte Exception ist nur eine Sammelfehlermeldung welche bei allen möglichen Problemen bei der Security geworfen wird.

Mit diesem Eintrag im Service Behavior

<serviceSecurityAudit auditLogLocation="Application"

serviceAuthorizationAuditLevel="Failure"

messageAuthenticationAuditLevel="Failure"

suppressAuditFailure="true" />

bekommt man eine genaure Exception im Ereignisprotokoll.

Die hat mich allerdings auch nicht weiter gebracht. Erst als ich auf die Idee gekommen bin das Passwort im Client mal zu setzten hab ich gemerkt das es dann funktioniert. Setzte ich ein falsches Passwort bekomme ich die Exception die ich im UserNamePasswordValidator schmeiße. Lasse ich das Passwort auf Null bekomme ich wieder diese nichtssagende Exception von oben :rolleyes:

Ich hatte das Passwort ursprünglich weggelassen um zu sehen ob er auch wirklich Username/Passwort validiert...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...