2013-02-10 3 views
1

J'ai créé un service WCF personnalisé au sein d'Umbraco. Le service réside dans le dossier Service et semble fonctionner correctement (je peux l'appeler et il répond de façon appropriée). Maintenant, je veux que les utilisateurs s'authentifient lorsqu'ils appellent le service.Serveur WCF personnalisé avec authentification au sein d'Umbraco

Pour ce faire, je l'ai ajouté ces lignes dans le web.config:

<system.serviceModel> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" /> 
<bindings> 
    <webHttpBinding> 
    <binding name="RaceManBinding"> 
     <security mode="None" /> 
    </binding> 
    </webHttpBinding> 
</bindings> 
<services> 
    <service name="RaceManagerAdmin.RaceManDataService" behaviorConfiguration="RaceManBehavior"> 

    <endpoint address="" 
       binding="webHttpBinding" 
       contract="System.Data.Services.IRequestHandler" /> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="RaceManBehavior"> 
     <serviceCredentials> 
     <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" 
           membershipProviderName="UmbracoMembershipProvider" /> 
     </serviceCredentials> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
</system.serviceModel> 

Quand mon service est appelé il doit utiliser le fournisseur d'appartenances Umbraco pour authentifier les utilisateurs.

Mon client specificies en créant un objet d'informations d'identification réseau, comme celui-ci:

var a = new RaceEntities(new Uri("http://localhost:40406/umbraco/Webservices/RaceManDataService.svc")) { Credentials = new NetworkCredential("admin", "secret") }; 

Quand je l'HTTPContext.Current j'inspecte ne vois pas tous les utilisateurs authentifiés.

Qu'est-ce que je fais mal?

Frederik

Répondre

1

Vous devez activer la compatibilité ASP.Net afin d'accéder à l'identité via le HttpContext:

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
</system.serviceModel> 

La réponse à cette question mentionne une autre méthode: How to access HttpContext.Current.User.Username in WCF service

+0

Salut Je suis désolé, mais il semble que j'ai raté certaines parties de mon service.mode-tag. Je l'ai inclus tout maintenant. – Frederik

Questions connexes