0 votes

Silveright - étendre AuthenticationService pour fournir une authentification personnalisée

Je cherche à ajouter au système d'authentification fourni dans le modèle commercial Silverlight 4 car mon modèle ne correspond pas complètement à celui fourni dans le modèle. J'ai un service Web existant qui effectue mon authentification et fournit des rôles ainsi que des opérations autorisées pour chaque rôle. C'est le modèle fourni par AzMan/Authentication Manager.

Cependant, au lieu d'obtenir un seul rôle, après l'authentification, je fournis à l'utilisateur une liste de rôles disponibles et je lui permet de sélectionner l'un de ces rôles pour ensuite obtenir une liste d'opérations/actions pour ce rôle sélectionné.

Le problème que j'ai est que je n'arrive pas à trouver comment ajouter de nouvelles méthodes au service d'authentification pour me permettre d'obtenir les opérations pour l'utilisateur actuel et le rôle actuellement sélectionné afin de compléter le processus de connexion par exemple.

public SessionInfo GetOperations(string username, string selectedRole)
{
    SessionInfo sessionInfo;

    using (AzManServiceClient azClient = new AzManServiceClient("AnonymousAuthentication"))
    {
        sessionInfo = azClient.LoginUserByUsername("msldap://CN=LiveApps,CN=Program Data,DC=HLSUK,DC=local", "AIRS", selectedRole, null, username);
    }

    return sessionInfo;
}

La méthode ci-dessus n'est pas accessible depuis LoginForm.xaml.cs en utilisant WebContextBase.Current.Authentication... Seules des méthodes telles que Login sont visibles, ce qui est encore plus déroutant car je ne peux pas voir ces méthodes dans authenticationbase. Je suis complètement perdu. Comment puis-je ajouter de nouvelles méthodes au service d'authentification, ou devrais-je créer un nouveau domainservice, ou devrais-je accéder au service azman pour obtenir directement les opérations depuis le client silverlight.

1voto

Einarsson Points 339

Avez-vous essayé de remplacer les méthodes dans AuthenticationBase?

Ensuite, vous pouvez étendre votre service d'authentification avec la logique que vous voulez.

        Public Class AuthenticationRiaService
            Inherits AuthenticationBase(Of UserAccount)

            Protected Overrides Function ValidateUser(ByVal userName As String, ByVal password As String) As Boolean
            End Function

Définissez également

WebContext.Current.Authentication sur votre service d'authentification tel que trouvé dans l'espace de noms System.ServiceModel.DomainServices.Client.ApplicationServices

Désolé pour le code VB stupide. :D

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X