2010-08-02 5 views
2

J'essaie d'évaluer si l'utilisation de l'autorisation basée sur le principal classique ou de l'autorisation IdentityModel est utilisée. Il semble que Microsoft recommande ces derniers ces jours-ci, mais je n'ai pas vu assez en termes de maturité ou de soutien pour cela. Plus précisément, j'aime vraiment la possibilité de définir un PrincipalPermissionAttribute et de permettre à l'infrastructure de prendre automatiquement en charge la prévention des appels de méthode et d'instanciation de classe non autorisés.Autorisation basée sur les revendications intégrée avec Windows Identity Foundation

J'utilise déjà un ServiceAuthorizationManager et je pourrais y effectuer une évaluation ... mais qu'en est-il des scénarios non-WCF? Et qu'en est-il de la prévention de l'instanciation de certaines classes et de la prévention des appels de méthode au sein de une opération WCF, pas avant son exécution? J'utilise aussi déjà un mécanisme IoC et j'ai envisagé d'utiliser des intercepteurs et un activateur personnalisé qui effectue une évaluation basée sur les réclamations contre un hypothétique RequiresClaimAttribute sur une classe ou une méthode ... mais je n'aime pas vraiment une telle approche parce que Il faut donc que tous les objets qui veulent un support d'autorisation utilisent le conteneur IoC pour la résolution et la construction ...

Donc je suppose que ma question est ... est-ce que Microsoft Identity Foundation de Microsoft (aka IdentityModel framework) est vraiment assez mature pour l'utiliser? point? Existe-t-il des moyens d'accomplir ce que je décris avec IdentityModel?

Répondre

2

Vous pouvez réaliser tout cela avec WIF. Entre autres choses, WIF se branche dans le framework .NET par IPrincipal et IIdentity interfaces. Une application qui est codée par rapport à ces deux, serait probablement "juste de travail" (comme la plupart des services ASP.NET et WCF). Rôles, comme un artefact pour atuhorization est automatiquement mappé par WIF aussi donc tout frameowrk qui appelle IPrincipal.IsInRole, devrait fonctionner.

This example montre l'intégration avec "RIA Services" et explique une mise en œuvre possible (et extension) pour une plus générale "RequiresClaimAttribute" comme vous le suggérez.

En ce qui concerne la question de la maturité. Je suppose que cela dépend de la façon dont vous le définissez. C'est un ajout relativement nouveau au framework .NET, mais il est publié et entièrement supporté. Je connais plusieurs applications (de production) utilisant WIF. Certains sont plus importants, d'autres plus petits, d'autres dans le secteur privé et d'autres dans les solutions gouvernementales. Vous devrez évaluer l'applicabilité et l'adéquation à votre propre contexte et à vos contraintes.

+0

Merci, mais à moins que je ne comprenne mal, RequiresRoleAttribute fait directement partie de RIA et n'est donc pas extensible ou réutilisable dans d'autres parties du .NET Framework, alors que PrincipalPermission est intrinsèquement supporté à travers le .NET Framework. Je me rends compte que WIF peut se connecter directement au modèle d'autorisation principal (et je le fais déjà pour les services WCF par PrincpalAuthorizationPolicy), mais cela n'aborde pas vraiment la facilité d'utilisation du WIF par opposition à l'autorisation directe. – Jeff

Questions connexes