Bonjour à tous !

Dans le cadre d'un projet professionnel, je dois développer un service windows qui héberge un service web bidirectionnel sur net tcp avec authentification par nom d'utilisateur.

Le service web dispose donc d'un endpoint net.tcp et d'un endpoint mex, voici le contenu du app.config :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
 
    <services>
      <service behaviorConfiguration="WSEventsTestBehavior" name="WSEventsTest.Test">
        <endpoint address="" binding="netTcpBinding" bindingConfiguration=""
          bindingName="NewBinding0" contract="WSEventsTest.ITest" />
        <endpoint address="mex" binding="mexTcpBinding" bindingName="NewBinding1"
          contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://monpc:9000/WSEventsTest" />
          </baseAddresses>
        </host>
      </service>
    </services>
 
    <behaviors>
      <serviceBehaviors>
        <behavior name="WSEventsTestBehavior">
          <serviceCredentials>
            <userNameAuthentication userNamePasswordValidationMode="Custom"
              includeWindowsGroups="false" customUserNamePasswordValidatorType="WSEventsTest.CustomUserNameValidator, WSEventsTest" />
          </serviceCredentials>
          <serviceMetadata httpGetEnabled="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
 
  </system.serviceModel>
 
  <system.web>
    <compilation debug="true" />
  </system.web>
</configuration>

Et voici le code de Validate..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Public Class CustomUserNameValidator
    Inherits System.IdentityModel.Selectors.UserNamePasswordValidator
 
    Public Overrides Sub Validate(userName As String, password As String)
        IO.File.AppendAllText("c:\ws-debug.txt", "[" & DateTime.Now & "] [CustomUserNameValidator.Validate] userName=[" & userName & "],password=[" & password & "]")
    End Sub
End Class
Du coté du client, dans le app.config, j'ai bien spécifié une sécurité Message avec un type UserName..
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<security mode="Message">
        <message clientCredentialType="UserName" />
</security>

Et dans le code du client...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
wsClient.ClientCredentials.UserName.UserName = "utilisateur1"
wsClient.ClientCredentials.UserName.Password = "password1"
wsClient.Open()
Le problème est que je ne passe jamais dans le Validate pour valider ou non l'authentification.. et après 3-4 jours et beaucoup de tests différents, je n'ai toujours pas résolu le truc.. Quelqu'un aurait il une idée ?

A savoir qu'en authentification Transport.Windows ça marche niquel..

Merci d'avance !

(merci pour les balises code !)