IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Réseaux sociaux Discussion :

API REST (JWT, Oauth2) ?


Sujet :

APIs Réseaux sociaux

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 89
    Par défaut API REST (JWT, Oauth2) ?
    bonjour tout le monde,

    Je m'intéresse pour protéger au mieux une API REST (données hautement sensible)
    Cette API REST doit être accessible par plusieurs applications web.
    l'authentification de base est : login + password
    (et de pouvoir en fonction des rôles users de permettre ou pas la création ou consultation via l'API)


    Je regarde entre JWT et Oauth2 (ce dernier me semble compliqué).

    la meilleure technique ?
    (1) JWT + SSL
    (2) Oauth2 + JWT + SSL


    quelle est la technique la plus sécurisé et la souple ?


    en fait, je ne vois pas l'utilité de Oauth2 à part pour aller sur facebook…

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    Hello

    Oauth2 n'est pas envisageable car ce n'est pas adapté à ton cas d'utilisation. Oauth2 est utilisé pour accéder à des resources d'un utilisateur qui est hébergé par un tiers . Admettons tu as une application Web. Tu souhaite accéder aux informations de profil d'un de tes utilisateurs. Ca se passera de la façon suivante :
    1) Tu redirige ton utilisateur vers facebook
    2) ton utilisateur s'authentifiera sur facebook
    3) Il donnera son consentement pour que ton application puisse accéder à ses information de profil facebook
    4) Il sera redirigé vers ton application avec un code
    5) Ton application echangera ce code pour obtenir un token d'access de la part de facebook
    6) Ton application utilisera ce token d'acces pour intérroger l'API facebook

    Comme tu le vois ça ne sert absolument à rien pour authentifier les utilisateurs pour utiliser ta propre API. L'idée est d'utiliser JWT. Quand un utilisateur s'est authentifier à ton appli, cette dernière devrait fournir un token JWT. Ce token JWT doit :
    - Avoir une durée de vie limité
    - Avoir une signature que tu vas vérifier à chaque fois que tu reçois une requête sur une route de ton API
    Je suis pas exhaustif il y'a une super doc sur le sujet ici : https://www.owasp.org/index.php/JSON...Sheet_for_Java

    Le token JWT peut être transmis de deux façon par les clients :
    - Soit via le header Authorization.
    - Soit via des cookies ( pas des cookies de session)

    J'aime bien les cookies car dans le cadre de client en javascript tournant dans un navigateur cela permet d'avoir un moyen plus sûre de stocker les JWT. En effet l'utilisation d'un header d'authorization oblige les clients tournant dans un navigateur de stocker les JWT dans le local storage ou le session storage. Ces deux espaces de stockages sont vulnérables aux attaques XSS. Alors qu'en utilisant le mécanisme des cookies il est possible d'utiliser les mécanismes de tag suivant :
    • HttpOnly : Prévient l'accès par Javascript aux cookies. Ainsi en cas de faille XSS les cookies ne risquent pas d'être volés
    • Secured : Prévient le cookie d'être transmis sur un canal non SSL ( très utilise contre certaines attaques de l'homme du milieu )
    • SameSite : Prévient les attaques de type CSRF

    Plus d'info ici : https://blog.dareboost.com/fr/2016/1...cure-httponly/
    Note que l'utilisation de cookie n'implique pas forcémment de session donc ne casse pas l'architecture REST. Ici il s'agit d'un moyen pour transmettre le token JWT entre ton client et ton server.

Discussions similaires

  1. [Silex][oauth2-server-php] API REST - Authorisation
    Par sebastien.bordat dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 02/08/2016, 09h14
  2. Réponses: 0
    Dernier message: 23/05/2016, 16h46
  3. [2.x] API REST : type_grant=password via oauth2
    Par dukoid dans le forum Symfony
    Réponses: 0
    Dernier message: 21/04/2016, 23h10
  4. API rest avec oAuth2
    Par jm54_ dans le forum Django
    Réponses: 10
    Dernier message: 26/11/2013, 11h42
  5. [Authentification] API REstful PHP
    Par yoshï dans le forum REST
    Réponses: 1
    Dernier message: 22/07/2008, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo