2014-05-23 3 views
0

J'ai une application WinForms qui s'interface avec un site Web. Dans l'application Windows, les utilisateurs peuvent se connecter à leur compte via un service web SOAP (nom d'utilisateur/mot de passe sont envoyés avec chaque appel de service web, effectué via HTTPS). J'ai été invité à créer un bouton qui les connecte au site Web dans leur navigateur. Ils n'ont donc pas besoin de se connecter deux fois s'ils doivent utiliser à la fois l'application Windows et le site Web en même temps.Comment connecter les utilisateurs sur un site Web asp.net (via API) à partir d'une application Windows?

Est-ce un bouton dans l'application Windows qui permet d'accéder en un clic au site Web en codant leur nom d'utilisateur et mot de passe dans l'URL? Lors de l'utilisation de HTTPS, je ne suis pas sûr que l'URL elle-même soit cryptée, ou seulement le trafic de demande/réponse. Serait-il préférable de chiffrer asymétriquement l'utilisateur/passer dans un type de jeton de connexion? Et si oui, comment pourrais-je empêcher quelqu'un d'autre d'utiliser ce même jeton? Je ne suis pas vraiment sûr de ce que Google pour obtenir une réponse sur celui-ci et en tant que changement d'API est relativement difficile une fois qu'il est utilisé, je ferais mieux de faire quelque chose de sensé la première fois.

Répondre

1

Vous pouvez créer un jeton et le stocker dans votre base de données avec le nom d'utilisateur et un délai avant utilisation. Ensuite, vous incluez le jeton dans l'URL, et sur le site Web que vous recherchez dans votre base de données, vérifiez que le jeton existe et qu'il est connecté à un utilisateur et qu'il est récent.

+1

Quel est l'avantage d'utiliser un token plutôt que d'utiliser le nom d'utilisateur et le mot de passe comme token, quand la connexion est cryptée quand même? Je sais que l'utilisation de jetons est assez courante mais je n'ai jamais vraiment compris le raisonnement derrière cela. – NickG

+0

Avec un jeton aléatoire, il serait improbable que quelqu'un devine un jeton qui pourrait fonctionner, en particulier dans le délai d'attente du jeton. (Vous devriez générer un nouveau jeton à chaque fois). Avec un nom d'utilisateur et un mot de passe cryptés, le mot de passe peut être utilisé par n'importe qui qui l'obtient. En utilisant HTTPS cela ne devrait pas arriver, mais avec un risque de mauvaise configuration, je préférerais avoir un mécanisme sécurisé au niveau de la solution. Aussi, idéalement, votre système ne devrait pas connaître le mot de passe de l'utilisateur. Il devrait être stocké comme un hachage, et seulement utilisé pour vérifier ce que l'utilisateur entre plus tard. Un jeton vous donne un mécanisme interne. –

+0

Le système utilise des mots de passe hachés, mais envoyer uniquement le hachage permettrait à tout le monde d'accéder au hachage, ce qui est encore moins sûr que de demander le mot de passe. Donc probablement vous voulez seulement utiliser le hachage pour le stockage, pas pour n'importe quel type d'authentification? – NickG

Questions connexes