2016-07-21 4 views
1

Ich habe einen kleinen WCF-Dienst im Intranet und ich muss Authentifizierung darin implementieren. Dieser Dienst kommuniziert mit verschiedenen Java-Clients über http (verwendet basicHttpBinding). Ich habe versucht, wiehttpBasicBinding mit Authentifizierung und keine Nachricht oder Transportsicherheit

<basicHttpBinding> 
    <binding> 
     <security mode="None"> 
     <message clientCredentialType="UserName"/> 
     </security> 
    </binding> 
    </basicHttpBinding> 

so verbindlich zu konfigurieren und zu zusätzlichen Service Verhalten

<behavior> 
     <serviceMetadata httpGetEnabled="true"/> 
     <serviceCredentials> 
     <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="LocalTasks.Services.Validators.IntegrationUserNameValidator,LocalTasks.Services"/> 
     </serviceCredentials> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 

Aber nennt diesen Dienst nicht meine benutzerdefinierte UserNamePassword Validator getroffen. Ich habe auch die gleiche Variante versucht, aber mit Sicherheitsmodus auf Nachricht eingestellt und ein Zertifikat hinzugefügt. In diesem Fall hat der Validator funktioniert.

Wie konfiguriert man den Dienst zur Authentifizierung von Benutzern über basicHttpBinding ohne jegliche Nachrichten- oder Transportsicherheit?

Antwort

1

Sie können das nicht tun. Sie benötigen entweder Nachrichten- oder Transportsicherheit, um die Anmeldeinformationen bei der Übertragung vom Client zum Server zu verschlüsseln.

Sie sollten wirklich Nachricht oder Transport Sicherheit verwenden.

Sie können auch TransportCredentialOnly verwenden, für die kein SSL-Zertifikat erforderlich ist, das jedoch nur zum Testen empfohlen wird.

<basicHttpBinding> 
    <binding name="Authentication" > 
    <security mode="TransportCredentialOnly" > 
     <message clientCredentialType="UserName"/> 
    </security> 
    </binding> 
</basicHttpBinding> 
+0

Ursache erfordert eine Änderung im Legacy-Code von Java-Clients. Also gibt es keine Möglichkeit, Anmeldeinformationen an den Server ohne Sicherheit über den offenen HTTP-Kanal zu senden? – Anton

+0

Wenn Sie sowieso keine Verschlüsselung haben, können Sie den Sicherheitsmodus "TransportCredentialOnly" verwenden. Siehe meine Bearbeitung. – cvlad

+0

Ich verstehe. Jede zusätzliche Konfiguration von benötigt? – Anton