Sécurisation des sessions de données sur WFC / JSON avec des cookies ou des méthodes alternatives

StackOverflow https://stackoverflow.com/questions/9345280

Question

Je recherche pendant environ 5 heures maintenant sur ce qui serait la meilleure méthode pour les données « secure » sessions / sessions de connexion sur WCF.

Quelques faits:

  • Le code WCF est en C # et sera hébergé en ligne pour tous à l'utilisation (API)
  • Il y aura un site Web distinct qui utilise l'API comme une interface graphique pour les utilisateurs
  • Il sera également consommé par l'iPhone, Android et tout ce que je peux penser à
  • Les données seront envoyées à l'aide JSON
  • Le plus important: L'API sera accessible via SSL

Option 1 -

J'ai été en train de jouer avec l'aide de cookies pour sécuriser l'accès au système API. Je connais un moyen facile, mais brut, est de présenter une demande comme si elle était une requête HTTP à partir d'un navigateur et d'utiliser Formulaires d'authentification . Je préférerais le faire en utilisant uniquement JSON et les cookies -. En supposant que je vais dans cette voie

Option 2 -

Cela étant dit au sujet de Cookies. Je pensais à une autre façon d'y arriver, peut-être qu'il est un moyen plus sûr aussi? Je voudrais passer un objet d'authentification (classe personnalisée) par JSON avec l'objet (s) requis pour chaque appel. Au sein de cet objet d'authentification il y aurait deux membres ou plus:

  1. SessionID: Ce serait un GUID qui est stocké dans la base de données de l'API
  2. valeur de hachage: possible un MD5 Hash, je ne l'ai pas décidé, qui sera mis à jour à chaque appel

L'idée de mettre à jour la valeur de hachage sur chaque appel réussi fait à l'API est donc que l'objet d'authentification stocké localement du client sera modifiée de façon que l'usurpation d'identité ne pouvait être effectuée. Au moins, je crois que cela, peut-être que je me trompe?

Remarque:. Cette valeur serait générée côté serveur, stocké dans la base de données et transmis au client

Je ne suis pas sûr quel chemin à parcourir. Si l'option 2 serait une meilleure façon alors je vais loin.

Seulement si l'option 1 est le meilleur alors mon problème ici est que je ne peux pas vraiment trouver comment mettre le cookie au service WCF sur le côté de l'API. Tous les pointeurs?

Merci pour votre aide.

Était-ce utile?

La solution

L'avantage d'utiliser l'authentification par formulaire est que vous alors n'avez pas à vous soucier d'avoir l'expertise d'une sécurité / cryptographie professionnelle. Vous pouvez utiliser un moyen déjà durci pour gérer en toute sécurité une session. En outre, coller avec les limites du protocole HTTP des problèmes avec les pare-feu comme la plupart des endroits permettent le port sortant 80 et 443 du trafic.

Votre option 2 fait essentiellement la même chose que l'authentification par formulaire vous-même avec un hachage changeant. Normalement, ayant une valeur de changement (soit de hachage ou de la valeur imprévisible) est appelé un nonce et est utilisé avec OAuth.

Considérez le soutien OAuth là-bas car il est indépendant de la plate-forme et il y a aussi des bibliothèques déjà écrites là-bas pour cela.

Mais si elle était moi et je suis en utilisant C # et WCF, je bâton avec les formulaires d'authentification et de mettre mon effort dans dans la logique réelle dans l'API qui est mon expertise particulière.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top