2010-12-13 16 views
0

Je travaille sur un service WCF hébergé par un service Windows. J'ai ajouté mon gestionnaire d'autorisation personnalisé et politique d'autorisation et j'ai vu que la méthode d'autorisation Evaluate() de la politique d'autorisation est effectivement appelé APRES le CheckAccessCore() du gestionnaire d'autorisation: ne devrait pas être le contraire?WCF 4.0: IAuthorizationPolicy Evaluate() appelé après ServiceAuthorizationManager CheckAccessCore(): pourquoi?

J'ai une recherche sur Google et a trouvé quelques conseils, mais ne fonctionne pas pour moi (par exemple: link)

Voici un petit bout du app.config:

<userNameAuthentication userNamePasswordValidationMode="Custom" 

     customUserNamePasswordValidatorType="Reply.Platform.IoTAccessControlLibrary.IoTPwdValidator, Reply.Platform.IoTAccessControlLibrary" /> 

     </serviceCredentials> 

     <serviceAuthorization serviceAuthorizationManagerType="Reply.Platform.IoTAccessControlLibrary.IoTServiceAuthorizationManager, Reply.Platform.IoTAccessControlLibrary"> 

     <authorizationPolicies> 

      <add policyType="Reply.Platform.IoTAccessControlLibrary.IoTAuthorizationPolicy, Reply.Platform.IoTAccessControlLibrary" /> 

     </authorizationPolicies> 

     </serviceAuthorization> 

Can quelqu'un m'aide?

Cordialement,

Gianpaolo

Répondre

1

Il travaille exactement comme prévu. Cela revient à cette simple équation - Si l'accès ne doit pas être accordé, il ne devrait pas être nécessaire de vérifier si l'accès doit être autorisé. Dans le cas de l'exemple que vous fournissez ici, vous devez d'abord valider la combinaison correcte d'une paire nom d'utilisateur/mot de passe, puis vous vérifier pour voir s'ils ont accès au système. Après avoir vérifié s'ils ont accès au système, vous évaluez ensuite s'ils sont autorisés par les stratégies définies.

Considérons cet exemple de base:

1) Est-ce que le nom d'utilisateur et mot de passe avec correspondance un utilisateur connu? Oui. (Informations d'identification de service)
2) Cet utilisateur connu est-il activé sur le système? Oui. (Autorisation de service)
3) Cet utilisateur connu a-t-il le rôle de 'X'? Oui. (IAuthorizationPolicy)

D'où le flux de travail défini par WCF.

+0

réponse parfaite, merci BadDawg, RIP mon ami. –