Je me réfère à cet excellent article http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/ qui parle d'Amazon comme la sécurité pour le service Web. Cependant, on m'a posé une question dans l'équipe: pourquoi en avons-nous besoin si nous utilisons déjà HTTPS. Je n'ai pas pu répondre car il me semble qu'ils ont peut-être raison, même si mon instinct me dit le contraire.
Y a-t-il également des endroits lors de la fourniture de services REST où HTTPS peut ne pas fonctionner? Vous aimez les sites Web tiers?
Si quelqu'un a de l'expérience dans la sécurisation de services Web sur les interwebs publics, veuillez faire la lumière sur votre expérience.
Merci d'avance.
EDIT: Pour clarifier, je ne parle pas d'authentification d'utilisateur mais plus d'authentification client. L'authentification de l'utilisateur peut être supposée être du texte brut sur HTTPS + REST.
Mon inquiétude est que cela permet toujours à n'importe qui d'utiliser le service Web sans que mon client y accède, car tout est en texte plat, bien que sur HTTPS le point de terminaison client puisse toujours utiliser mon service Web sans l'application client.
Réponses:
Pourquoi devons-nous donner à Gmail - ou à tout autre site avec des comptes d'utilisateurs - notre nom d'utilisateur et notre mot de passe s'il utilise déjà HTTPS? La réponse est la même que la réponse à votre question.
HTTPS fournit, avant tout, une connexion cryptée entre le serveur et le client.
À moins que le serveur ne donne à chaque utilisateur un certificat , le serveur ne peut pas faire confiance au client sans une autre méthode d'authentification.
la source
HTTPS est très efficace pour prévenir les écoutes et les attaques de type "homme au milieu". Comme il crypte tout le trafic pour une session.
Mais comme la plupart des gens utilisent les certificats par défaut fournis avec leur navigateur et ne savent pas comment créer leur propre certificat personnel ou configurer le navigateur pour l'utiliser.
Cela rend HTTPS assez inutile pour l'authentification des utilisateurs autre que la protection d'une boîte de dialogue d'authentification contre l'écoute, etc.
la source
HTTPS consiste à sécuriser le canal, pas à prouver qui est l'appelant ou les nombreuses autres choses dont vous devez tenir compte. L'authentification, l'autorisation et le chiffrement de la couche de transport ne sont qu'une petite partie de ce que vous devez considérer. De nombreuses vulnérabilités connues liées aux applications Web s'appliquent beaucoup aux API REST. Vous devez prendre en compte la validation des entrées, le craquage de session, les messages d'erreur inappropriés, les vulnérabilités internes des employés, etc. C'est un gros sujet.
Robert
la source
Vous pouvez adopter l'approche des certificats SSL client et séparer la sécurité de l'API. Le gros inconvénient de cette approche est le surcoût de l'opération qui deviendra coûteux car de plus en plus de clients consomment votre API.
Quoi qu'il en soit, l'authentification de base HTTP convient parfaitement à la grande majorité des services publics.
la source