2010-05-29 28 views
0

J'ai un service WCF devant un magasin de AzMan qui passe les rôles et opérations aux clients utilisant l'interface suivante:Silverlight 4 - authentiation/autorisation contre le service WCF personnalisé

[OperationContract] 
    bool AuthenticateUser(string password, string appName); 

    [OperationContract] 
    string[] GetRoles(string storelocation, string appName); 

    [OperationContract] 
    string[] GetOperations(string storeLocation, string appName, string selectedRole); 

Les clients se connectent à ce service en utilisant les fenêtres authentification (mais les utilisateurs doivent envoyer leur mot de passe pour réaffirmer leur identité). En fin de compte, le service offre un éventail d'opérations que chaque client peut effectuer en fonction de son rôle sélectionné. J'ai ouvert une nouvelle application métier Silverlight et essayé de comprendre comment l'authentification/l'autorisation fonctionne dans ce modèle, ainsi que de parcourir le Web pour trouver des exemples de connexion de mon service Web à la boîte de connexion déjà créée dans le modèle , mais je suis complètement à la perte comme comment faire ceci!

Quelqu'un peut-il offrir des conseils?

Répondre

1

Le modèle d'application métier a un AuthenticationService, qui est basé sur l'objet User et la classe AuthenticationBase. AuthenticationBase possède des méthodes virtuelles que vous pouvez remplacer pour utiliser vos propres mécanismes de sécurité.

Par exemple, il existe une méthode de connexion basée sur un nom d'utilisateur et un mot de passe. Cette méthode renvoie un IUser qui a un nom et des rôles.

Après avoir regardé votre interface, je créerais une sous-interface de IUser pour inclure la liste des opérations autorisées et changer la classe User générée pour implémenter cette sous-interface. Et je remplacer la méthode de connexion et les méthodes connexes dans AuthenticationService pour utiliser votre code Azman existant.

+0

Génial - merci! Une fois que j'ai cherché un peu authentificationbase et vu quelques exemples, j'ai réussi à tout trier. La seule chose différente est que vous n'avez pas besoin de dériver de IUser, vous ajoutez simplement de nouvelles propriétés à la classe User partagée déjà créée pour vous dans le modèle. – Calanus

+0

Droite. Merci pour les commentaires. – Timores