locked
Déclencher la demande de sauvegarde des logins d'un navigateur RRS feed

  • Question

  • Bonjour,

    Je développe une application en Silverlight/WCF et j'ai une petite demande d'amélioration qui est tombé.

    Comment faire en sorte que le navigateur demande à l'utilisateur si il souhaite retenir son mot de passe ??

    De mon expérience passée et de ce que j'ai pu lire, le navigateur recherche les types input dont l'id est 'password' mais à condition qu'ils soient contenus dans un <form></form>. Alors voila je me demande comment générer ce comportement avec silverlight, étant donné que je ne sais pas comment générer une balise <form>.

    Quelqu'un aurait-il une idée ?

     

    Je vous remercie par avance,

    Bonne journée


    mercredi 10 août 2011 14:16

Réponses

  • Re-Bonjour,

    Je pense avoir trouvé une solution de contournement à mon problème, pourriez-vous me dire ce que vous en pensez.

     

    Voici la démarche qui m'a amené à cette idée. Je me suis dis, puisque ce comportement du navigateur ne se déclenche pas seul, pourquoi ne peut essayer de le déclencher manuellement lors d'un click sur 'login'. J'ai donc vu que l'on peut accéder aux 'capabilities' d'un navigateur, mais probablement de manière un peu trop complexe pour la petite fonctionnalité que je souhaite.

    Cela m'a donc amené à penser que si le navigateur ne veux pas retenir lui-même les mot de passe, pourquoi ne pas l'y obliger si l'utilisateur le souhaite. Ma solution est donc la suivante :

    J'ajoute une checkBox 'remember me' (par exemple) et on fonction du choix de l'utilisateur (cochée ou non) je crée un hash avec un délais d'expiration que je stocke dans l'IsolatedStorage. Ensuite lorsque l'utilisateur relance l'application, je vérifie l'IsolatedStorage et compare le hash code (si il est dans sa période de validité) avec une table dans ma BDD contenant les hash code. Ainsi si la référence existe je fais un call à mon service de login avec les informations nécessaire et le tour est joué.

     

    Pensez-vous qu'il s'agisse d'une solution viable ?

    Merci d'avance

    • Marqué comme réponse William-H vendredi 12 août 2011 20:31
    vendredi 12 août 2011 08:26
  • Oui je pense que c'est une bonne alternative.

    Par contre je sais pas si ces liens peuvent t'intérésser :

    http://msdn.microsoft.com/fr-fr/library/system.web.security.formsauthentication(v=vs.80).aspx

    http://msdn.microsoft.com/fr-fr/library/system.servicemodel.domainservices.client.applicationservices.webcontextbase(v=vs.91).aspx

    ce sont des classes utiliser quand tu crée par défaut une application de type business.

     

    Mais en tous cas ta solution me parait bonne.


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    • Marqué comme réponse William-H vendredi 12 août 2011 20:31
    vendredi 12 août 2011 17:52
    Modérateur

Toutes les réponses

  • Bonjour,

     

    Je pense que vous trouverez votre bonheur sur ce tutorial très complet :

    http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2010/07/02/silverlight-and-wcf-ria-services-5-authentication.aspx


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    jeudi 11 août 2011 19:26
    Modérateur
  • Bonjour Pascal,

     

    Merci beaucoup pour ce lien, c'est effectivement très complet et intéressant en ce qui concerne l'authentification.

     

    En revanche cela ne réponds pas vraiment à mon problème. Je vais donc être un peu plus spécifique.

    Je n'utilise pas directement l'Authentification Domain Service, mais un simple service WCF appelé lorsque qu'un formulaire de login est rempli et que l'utilisateur click sur 'login'. Ce service crée ensuite un HTTPDataContext et génère les tokens nécessaire pour reconnaitre l'utilisateur lors de sa navigation.

    Mon soucis est donc au niveau du formulaire lui même qui, pour résumer, est composé d'une 'textBox', une 'passwordBox' et un 'button'. Je souhaiterais permettre au navigateur de reconnaitre ce 'formulaire' comme étant un formulaire de login ce qui permettrait d'afficher à l'utilisateur si il souhaite enregistrer ou non son mot de passe.

     

    Dans le lien précédent le prompt apparait dans le cas d’une authentification Windows, ce qui est relativement automatique et simple à reproduire en revanche pour le formulaire je coince toujours !

     

    Cordialement, William.


    vendredi 12 août 2011 07:50
  • Re-Bonjour,

    Je pense avoir trouvé une solution de contournement à mon problème, pourriez-vous me dire ce que vous en pensez.

     

    Voici la démarche qui m'a amené à cette idée. Je me suis dis, puisque ce comportement du navigateur ne se déclenche pas seul, pourquoi ne peut essayer de le déclencher manuellement lors d'un click sur 'login'. J'ai donc vu que l'on peut accéder aux 'capabilities' d'un navigateur, mais probablement de manière un peu trop complexe pour la petite fonctionnalité que je souhaite.

    Cela m'a donc amené à penser que si le navigateur ne veux pas retenir lui-même les mot de passe, pourquoi ne pas l'y obliger si l'utilisateur le souhaite. Ma solution est donc la suivante :

    J'ajoute une checkBox 'remember me' (par exemple) et on fonction du choix de l'utilisateur (cochée ou non) je crée un hash avec un délais d'expiration que je stocke dans l'IsolatedStorage. Ensuite lorsque l'utilisateur relance l'application, je vérifie l'IsolatedStorage et compare le hash code (si il est dans sa période de validité) avec une table dans ma BDD contenant les hash code. Ainsi si la référence existe je fais un call à mon service de login avec les informations nécessaire et le tour est joué.

     

    Pensez-vous qu'il s'agisse d'une solution viable ?

    Merci d'avance

    • Marqué comme réponse William-H vendredi 12 août 2011 20:31
    vendredi 12 août 2011 08:26
  • Oui je pense que c'est une bonne alternative.

    Par contre je sais pas si ces liens peuvent t'intérésser :

    http://msdn.microsoft.com/fr-fr/library/system.web.security.formsauthentication(v=vs.80).aspx

    http://msdn.microsoft.com/fr-fr/library/system.servicemodel.domainservices.client.applicationservices.webcontextbase(v=vs.91).aspx

    ce sont des classes utiliser quand tu crée par défaut une application de type business.

     

    Mais en tous cas ta solution me parait bonne.


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    • Marqué comme réponse William-H vendredi 12 août 2011 20:31
    vendredi 12 août 2011 17:52
    Modérateur
  • Merci pour ces liens effectivement j'ai pu constater ça aussi !

     

    Je vais donc m'orienter vers cette solution. Je mettrais le post à jour lorsque j'aurais plus de précision sur sa mise en oeuvre.

     

    Encore merci pour ton aide !

    Bonne soirée

    vendredi 12 août 2011 20:31