2011-09-01 3 views
1

Dans Securing an API: SSL & HTTP Basic Authentication vs Signature L'authentification HTTP de base est citée comme un moyen adéquat de sécuriser les appels de service Web REST si les appels REST sont effectués via SSL.Service REST via SSL et l'authentification de base HTTP

Mais il semble que cette méthode ne fonctionne toujours pas pour une page client non sécurisée qui utilise Ajax pour effectuer des appels au service REST qui est protégé derrière SSL & Basic Auth.

Je suis en train de concevoir une application qui effectue un mot de passe remis à zéro en utilisant la manière habituelle:

  1. utilisateur entre le nom d'utilisateur et demandes par courriel
  2. utilisateur « reset mot de passe » reçoit l'email avec un lien de réinitialisation de mot de passe qui comprend un jeton vérifiable
  3. utilisateur clique sur le lien et (après le jeton est vérifié) types dans leur mot de passe mis à jour

Par définition, ces pages ne pas nécessitent une connexion. Cette interface utilisateur peut-elle être implémentée à l'aide d'Ajax qui appelle les services REST pour effectuer des tâches telles que la validation de jeton, l'envoi d'e-mails, etc.? Même si ces services REST sont protégés par SSL & Basic Auth, les informations dont vous avez besoin pour appeler le service (c'est-à-dire le nom d'utilisateur et le mot de passe de l'application ) seront au mieux dans les cookies accessibles via le navigateur.

Je sais qu'il me manque quelque chose. Je ne sais pas ce que :-)

+0

Avez-vous fini par résoudre ce problème? – bryanmac

Répondre

0

Je n'ai aucune idée de ce que vous protégez donc je vais juste jeter quelques pensées.

SSL et TLS ne sont pas significatifs si vous (ou quelqu'un d'autre qui émet un appel) ne contrôlez pas la liste racine de la partie de confiance. Je dis cela parce que je m'attends à ce que si vous ne faites pas confiance au gars avec la clé de la serrure alors vous ne mettrez pas votre argent dans son coffre-fort. Donc, si les utilisateurs qui téléchargent les pages de connexion sont dans la nature pour ainsi dire, l'utilisateur/passer par TLS est une barre basse, certainement assez bon pour protéger ma liste de films préférés.

Carby loue à tout être EFM

+0

RAmen! Merci. C'est une barre basse pour réinitialiser le mot de passe. Il semble juste que Ajax appelant REST ne convient pas pour les applications qui ne nécessitent pas d'ouverture de session en premier. – pastafarian

+0

Je ne vois pas de problème avec l'utilisation d'AJAX pour déclencher le message électronique reset-your-password-token-link. Bien sûr, quand ils cliquent sur le lien dans un e-mail proggy ou un navigateur, il les emmènera à une nouvelle page (ou recharger la page de toute façon). Je suppose que vous êtes préoccupé par le fait que les cookies sont envoyés au mauvais serveur (mauvais gars) ... vous ne pouvez pas éviter ce risque sans beaucoup de soulever des charges lourdes. AJAX n'est pas la faiblesse ici. – Ram

+0

Merci. Oui mon souci est principalement sur la "deuxième partie" du workflow _after_ ils cliquent sur le lien.Si cette partie de l'application fait des appels Ajax l'application doit s'authentifier contre le service REST mais comment obtiendrait-elle les informations d'authentification (nom d'utilisateur/mot de passe a.k.a.apikey/sharedsecret) sans l'exposer à celui qui regarde le navigateur? – pastafarian

1

Tant que de 1 - 3 arrive sous SSL, les données seront en sécurité sur le fil au serveur (en supposant que vous faites confiance à l'autorité de certification)

Au cours de cette processus, le navigateur tiendra ces informations d'identification en mémoire. Vous n'avez pas d'autre choix que de croire que si l'utilisateur va entrer les données.

C'est le code des sites Web qui détermine s'il faut stocker des informations dans les cookies.

Je pense que vous devriez être OK si 1 - 3 sont sous SSL.

+0

Merci. Je pense que la déconnexion dans mon esprit est la suivante: si cela doit être une application ajax 1 page, les seuls voyages sur le serveur sera d'appeler ces services REST. Les services REST ont besoin d'informations d'authentification pour faire confiance à l'application appelante. Comment une application ajax peut-elle/utiliser les informations d'authentification? sans l'exposer via le navigateur? Personne ne peut simplement aller à cette page, regarder les cookies qu'il a mis et lever le nom d'utilisateur/passe REST. Ensuite, créez une autre application qui appelle les services REST en utilisant le nom d'utilisateur/passe. – pastafarian

+0

disons que je veux utiliser le schéma d'authentification de base d'amazon S3 comme ligne directrice pour appeler nos services REST via SSL en utilisant l'authentification de base: 'Authorization:" AWS "+" "+ AWSAccessKeyID +": "+ Base64 (HMAC-SHA1 (UTF- 8 (Date), UTF-8 (AWSSecretAccessKey))) '... S'il s'agit d'une application ajax" 1 page ", comment éviter d'exposer" AWSSecretAccessKey "au monde? – pastafarian

Questions connexes