2010-08-04 4 views
2

J'ai écrit un module IIS (base IHttpModule) qui effectue une authentification personnalisée (OpenAuth) avant de passer à mon service REST WCF. J'ai étendu GenericPrincipal pour suivre mon utilisateur, avec un IIdentity et mis en le domaine context.User à mon nouveau principal: application.context.User = principalModule IIS et WCF

Cependant, quand je reçois le contexte dans WCF (étape suivante dans le pipeline), l'utilisateur apparaît comme un WindowsPrincipal non authentifié "par défaut" (pas le GenericPrincipal que j'ai défini).

Je vois beaucoup de choses sur le net pour faire ce travail (y compris aspNetCompatibilityEnabled = "true" pour serviceHostingEnvironment, en jouant avec OperationContext, etc ...) Mais rien que j'ai essayé semble fonctionner.

Deux questions:

  1. est-il un moyen d'obtenir ce travail (ou suis-je aboyer juste le mauvais arbre ici).
  2. Quelle serait la façon canonique de le faire, ou peut-être la façon la plus «WCF» de gérer cette authentification personnalisée.

Merci

Répondre

1

Vous devez définir votre identité principale au cours de la phase d'autorisation dans WCF. Cela nécessite une politique d'autorisation personnalisée. Je vous suggère de lire this article pour plus d'informations. Je n'ai pas essayé de le faire avec un HttpModule personnalisé et REST, mais je l'ai fait avec succès avec les schémas d'authentification par défaut.