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

Symfony PHP Discussion :

REST API + authentifications multiples : Migration progressive vers une application one page


Sujet :

Symfony PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Lead Développeur
    Inscrit en
    Novembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Développeur
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 52
    Par défaut REST API + authentifications multiples : Migration progressive vers une application one page
    Bonjour,

    Ce sujet est plus une demande de conseils et d'idées dans le cadre d'un besoin d'évolution d'une application.

    Contexte actuel

    Je suis en charge depuis 2 ans maintenant d'un extranet permettant aux client de gérer leurs produits au sein de notre société.

    C'est une application complexe, en terme de fonctionnalités, développées sous le framework Symfony2.

    L'authentification est un basique système de type "user/password" géré avec brio par le bundle FOSUserBundle.

    Objectif

    Notre objectif d'évolution se décompose en deux points:

    • Proposer une API aux client avec authentification par clé privé et/ou apps OAuth2
    • Migrer, fonctionnalitée par fonctionnalitée, vers une application one page (angular, backbone...) qui utilisera la-dite API


    Avancé

    J'ai installé le bundle FOSRestBundle pour l'API reste est suivi cette documentation pour mettre en place un système d'authentification par token privé.

    Cela fonctionne très bien et je compte aussi mettre en place FOSOAuthServerBundle pour une authentification par application et par credentials (user/password) afin de l'intégrer dans une application one page.

    Problématique

    Le soucis actuel est que mon système d'authentification pour l'api est complétement hermétique à celui du reste de l'application.

    En voici mon fichier security.yml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    security:
        encoders:
            FOS\UserBundle\Model\UserInterface: sha512
     
        role_hierarchy:
            ROLE_ALLOWED_TO_SWITCH: ~
            ROLE_SUPPORT:           ~
            ROLE_ADMIN:             [ROLE_SONATA_ADMIN]
            ROLE_SUPER_ADMIN:       [ROLE_ADMIN, ROLE_SUPPORT, ROLE_ALLOWED_TO_SWITCH]
     
        providers:
            fos_userbundle:
                id: fos_user.user_provider.username_email
            api_key_user:
                id: security.user.provider.api_key
     
        firewalls:
            dev:
                pattern:  ^/(_(profiler|wdt)|css|images|js)/
                security: false
     
            api:
                pattern: ^/api
                stateless: true
                simple_preauth:
                    authenticator: security.authentication.authenticator.api_key
     
            main:
                pattern: ^/
                form_login:
                    provider: fos_userbundle
                    csrf_provider: form.csrf_provider
                    login_path: /login
                    check_path: /login_check
     
                anonymous: ~
                logout:
                    path: /logout
                switch_user: true
    Ce que j'aimerai, c'est qu'une fois l'utilisateur authentifié via la méthode classique, il puisse acceder a /api afin de pouvoir faire fonctionner certaines pages en application JS.

    Ceci permettrait de faire la transition "progressive".

    Quel est le moyen, au plus propre possible, de faire "cohabiter" ces firewalls ? Dois-je en avoir qu'un seul ? Si oui, comment rendre certaines authentification stateless (api key) et pas d'autre (form login) ?

    De manière plus générale, quelles méthodes et quels outils me conseillez-vous afin de mettre en place une application one page avec API ?

    Merci d'avance pour vos réponses.

    Sullivan

  2. #2
    Membre émérite
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Par défaut
    Salut,

    Si je comprend bien ton problème, j'avais ramé sur cette problématique. Regarde la notion de "Contexte du firewall"

    Avec un truc dans la veine de ce qui suit (context: primary), ça devrait passer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    firewalls:
            dev:
                pattern:  ^/(_(profiler|wdt)|css|images|js)/
                security: false
     
            api:
                pattern: ^/api
                stateless: true
                simple_preauth:
                    authenticator: security.authentication.authenticator.api_key
                context: primary
     
            main:
                pattern: ^/
                form_login:
                    provider: fos_userbundle
                    csrf_provider: form.csrf_provider
                    login_path: /login
                    check_path: /login_check
     
                anonymous: ~
                logout:
                    path: /logout
                switch_user: true
                context: primary

Discussions similaires

  1. Migration vers une application web service
    Par olivier75000 dans le forum Services Web
    Réponses: 3
    Dernier message: 09/01/2014, 17h16
  2. Choix Framework - Migration progressive d'une appli
    Par CARNIBAL dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 07/12/2012, 19h02
  3. Réponses: 8
    Dernier message: 17/02/2010, 12h19
  4. [FLASH MX] Lien vers une application
    Par mzt.insat dans le forum Flash
    Réponses: 4
    Dernier message: 15/03/2005, 19h18
  5. Faire un raccoucis vers une application sous wine
    Par zamanika dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 01/10/2004, 14h10

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