2011-05-31 7 views
1

tout d'abord, désolé si mon anglais ne sonne pas très bien, je vais essayer d'être aussi clair que possible. Je prévois de développer un site web avec l'architecture suivante:Faire des "zones de site privées" sécurisées en utilisant une architecture web quasi-sans serveur (AJAX templating magic)

Pages statiques servies aux clients qui utilisent des modèles javascript et ajax pour charger du contenu, le contenu sera fourni via une application ASP.NET MVC qui envoie json résultats aux pages client.

Ma question est assez simple: quelles méthodes puis-je utiliser pour fournir des zones privées aux utilisateurs de mon site?

La seule chose qui me vient à l'esprit est de fournir une page de connexion qui envoie des informations de connexion (cryptées) au serveur (via ajax). Ensuite, le serveur renvoie un jeton à stocker en tant que cookie. Pour chaque appel suivant au serveur via ajax (en parlant de zones privées maintenant), le jeton shuold sera également envoyé, et vérifié, et le résultat du contenu approprié devrait être fourni.

Comment puis-je mettre en œuvre ce truc? Quels sont les problèmes de sécurité et de confidentialité? En passant, j'utilise C# dans le serveur, JQuery pour la gestion simple ajax et Jquery.LoadJSON pour le chargement du contenu. Moustache pour javascript pour fournir des choses telles que les partiels et ainsi de suite. Je suis à la recherche de quelque chose qui me permet de gérer les cookies d'une manière simple et claire, les suggestions sont appréciées.

Un grand merci d'avance!

Répondre

0

Vous pouvez réellement utiliser l'authentification ASP.NET mécanisme en construction:

  • Autoriser l'accès anonyme à toutes vos pages (en supposant que l'exigence est).
  • Conserver une variable dans le script Java (côté client) pour indiquer si l'utilisateur a été authentifié ou non.
  • Pour accéder à un contenu/une zone sécurisés, appelez une fonction js commune qui verra si l'utilisateur actuel est authentifié ou non et si ce n'est pas le cas, effectuez l'action appropriée pour authentifier l'utilisateur.
  • S'il s'agit d'une authentification basée sur des formulaires, votre fonction doit inviter l'utilisateur à entrer ses informations d'identification dans une boîte de dialogue modale, puis transmettre ces informations d'identification au serveur via un appel ajax. Du côté serveur, vous devez valider les informations d'identification et utiliser FormsAuthentication.SetAuthCookie pour indiquer une authentification réussie à l'exécution d'ASP.NET. L'exécution maintiendra le cookie d'authentification (de sorte que vous ne devez pas gérer le jeton par vous-même)
  • Pour tout appel ajax traitant le contenu sécurisé, côté serveur, l'appel doit vérifier si l'utilisateur actuel est authentifié ou non (en utilisant HttpContext.Current.User.Identity.IsAuthenticated). Si ce n'est pas le cas, vous pouvez rediriger vers la page d'erreur ou émettre le code de réponse 401 (recommandé pour les schémas d'authentification Windows). Vous pouvez ajouter n'importe quel schéma d'autorisation dans votre appel AJAX pour les utilisateurs authentifiés.
+0

également, vous ne pouvez 'servir' qu'un fichier js particulier si l'utilisateur s'est authentifié. Donc, au départ, vous pourriez servir un fichier de base 'common.js' et si l'utilisateur s'authentifie, inclure conditionnellement un fichier 'leve2-access.js' qui avait des fonctionnalités supplémentaires qui étaient uniquement disponibles pour les utilisateurs authentifiés. –

+0

Tout à fait une bonne solution, je n'ai pas pensé à utiliser la gestion d'authentification intégrée asp.net pour seulement la partie "côté serveur" de l'authentification, je pensais que ça ne marcherait pas. Pour l'autre côté (le côté client) j'ai aussi trouvé ce joli petit bout de code: – Otto

+0

http://pablotron.org/?cid=1544 qui semble une solution sans douleur. Merci beaucoup! – Otto

Questions connexes