2010-02-11 4 views
2

Je sais que cette question doit avoir été discutée des millions de fois dans votre organisation. Encore un coup.Schéma d'authentification et d'autorisation pour une application exposée en tant que couche de service WCF?

Conception d'une application métier dont les opérations commerciales sont exposées en tant que services.

Ces services seraient accessibles par notre propre application Web (ASP.Net MVC), les clients de bureau intelligents, les clients mobiles, ainsi que nos partenaires via leurs applications Web ou leurs appels discrets.

Lorsque d'autres utilisateurs accèdent aux services et pas seulement à notre application Web, chaque appel au service doit être authentifié et autorisé.

Quel est le schéma de sécurité optimal? Comment puis-je transmettre les informations d'identification de l'utilisateur authentifié dans chaque appel de mon application Web au service? (Windows Identity Foundation ??)

Est-ce le cas pour Windows Identity Foundation? Si oui, quelles pièces correspondent où? et comment?

Merci pour votre aide.

Cordialement.

Répondre

0

Bien que je risque lapalissade: authentification et Authoriziation sont deux choses différentes et doivent être manipulés dans des endroits séparés dans votre application.

Dans WCF, vous pouvez implémenter l'authentification à l'aide des types IAuthorizationPolicy (not least intuitively named) et ServiceAuthorizationManager. Cela devrait prendre en charge l'authentification, mais vous permettra également de mapper l'utilisateur authentifié à une instance IPrincipal. Ce principal que vous pouvez affecter à Thread.CurrentPrincipal afin que vous puissiez y accéder ultérieurement depuis l'implémentation de l'application. Windows Identity Foundation (WIF) vous offre de nouvelles fonctionnalités principalement liées à l'authentification. Il s'appuie sur IPrincipal en définissant une interface IClaimsPrincipal, mais le concept reste le même.

Si vous devez implémenter la sécurité basée sur les revendications avec des partenaires fédérateurs, WIF est le bon choix. Si vous avez juste besoin d'authentifier et d'autoriser les utilisateurs internes de votre AD, ce ne serait pas mon premier choix. Toutefois, si vous suivez le code Liskov Substitution Principle et que vous ne codez qu'IPrincipal, vous pouvez ultérieurement modifier WIF s'il s'avère que vous devez traiter l'identité basée sur les revendications.

+1

Je cherche également une réponse à "Comment puis-je transmettre les informations d'identification de l'utilisateur authentifié dans chaque appel de mon application Web au service?" Une couche supplémentaire de serviceAgent est-elle nécessaire? ou il y a un modèle de conception qui peut aider ici. –

Questions connexes