2010-03-12 13 views
0

J'ai une page ASP.NET MVC qui appelle la logique WCF.Appel d'un WCF à partir de ASP.NET avec le même utilisateur de connexion unique LogonUserIdentity

Le système est à connexion unique utilisant NTML. La page ASP et le WCF utiliseront UserIdentity pour obtenir les informations de connexion de l'utilisateur.

Autre que NTML, je vais également avoir une autorisation basée sur formulaire (avec AD) dans le même système.

La page ASP, est-ce simple et je peux l'avoir à partir de HttpContext.Current.Request.LogonUserIdentity.

Cependant, il semble qu'il manque dans le WCF qui appelle par l'ASP, pas du navigateur.

Comment configurer pour passer le passe d'ID de l'ASP au WCF?

Répondre

0

Il me semble que vous devez effectuer 'Usurpation d'identité' de l'utilisateur d'origine qui vous permettra de transmettre l'identité de l'appelant d'origine au service WCF.

Voir ce guide: Impersonation and Delegation in WCF

Bien que vous avez configuré ASP.NET pour authentifier vos correspondants via NTLM, le processus de travail est toujours en cours d'exécution avec une identité de machine (selon votre configuration dans IIS). Vous auriez besoin de explicitly impersonate the caller en ayant le processus adopter l'identité des appelants, peut-être seulement temporairement.

MISE À JOUR: voir aussi délégation - WCF Gotcha #2

Si vous voulez éviter l'usurpation d'identité anothe option est de use the IdentityModel et un WindowsClaimSet

+0

J'ai pensé à Impersonation, mais je ne vraiment besoin. Tout devrait fonctionner à partir d'un compte système sécurisé, et ce dont j'ai besoin est le SID de la personne. Je commence à penser à passer par le paramètre. –

+0

Si vous regardez l'exemple de code dans mon deuxième lien, vous avez seulement besoin d'emprunter l'identité pendant la durée d'un bloc using. Mais je prends votre point de vue. Cependant, je ne le transmettrais pas en tant que paramètre à moins que vous ne prévoyiez de crypter les données. Je pense que vous devez utiliser la délégation. Voir le lien supplémentaire dans le texte de réponse mis à jour. – rohancragg