Bonjour,
pour vous mettre dans le bain: je galère.
Voilà ce que je veux faire:
un service WCF, qui refuse l'accès à certaines fontions de mon service, si l'utilisateur n'est pas identifié, j'utilise une authentification membership, mais je voudrais que celle-ci ne soit pas obligatoire, si je n'en ai pas besoin
J'utilise un client winforms pour me connecter.
Voilà les configurations de mon service:
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
37
38
39
40 <system.serviceModel> <bindings> <wsHttpBinding> <!-- Set up a binding that uses UserName as the client credential type --> <binding name="MembershipBinding"> <security mode ="Message"> <message clientCredentialType ="UserName"/> </security> </binding> </wsHttpBinding> </bindings> <behaviors> <serviceBehaviors> <behavior name="GestionDocBehavior"> <serviceCredentials> <serviceCertificate findValue="MyServerCert" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My" /> <userNameAuthentication userNamePasswordValidationMode ="MembershipProvider" membershipProviderName ="FrancisetJFMembershipProvider"/> </serviceCredentials> <serviceAuthorization principalPermissionMode ="UseAspNetRoles" roleProviderName ="FrancisetJFRoleProvider" /> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="True" /> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="GestionDocBehavior" name="GestionDoc"> <endpoint address="" binding="wsHttpBinding" bindingConfiguration="MembershipBinding" contract="IGestionDoc"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> </system.serviceModel>
Pour me connecter, j'utilise:
Code VB.net : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 service.ClientCredentials.UserName.UserName = "NomUser" service.ClientCredentials.UserName.Password = "Password" service.Open() 'traitement service.Close()
Et voilà mon erreur:
Les détails:Échec de la négociation de sécurité SOAP avec « http://localhost:1182/FrancisetJF/home/GestionDoc.svc » pour la cible « http://localhost:1182/FrancisetJF/home/GestionDoc.svc ». Pour plus d’informations, voir l’exception interne.
Pour créer mon certificat, j'ai fait :{"Échec de la constitution de la chaîne CN=MyServerCert du certificat X.509. Le certificat qui a été utilisé est doté d’une chaîne d’approbation impossible à vérifier. Remplacez ce certificat ou modifiez l’élément certificateValidationMode. Une chaîne de certificat a été traitée mais s'est terminée par un certificat racine qui n'est pas approuvé par le fournisseur d'approbation. "}makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=MyServerCert -sky exchange –pe
Partager