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 :

Authentification avec FOSUserBundle par une application mobile


Sujet :

Symfony PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Authentification avec FOSUserBundle par une application mobile
    Bonjour,

    Je souhaiterais pouvoir m'authentifier sur un site utilisant symfony par une appli mobile (ios ou Android). J'utilise FOSUserBundle pour gérer mes utilisateurs et il gère aussi l'authentification en partie. Sur pc, tout va bien j'arrive à me logguer et gérer les droits des utilisateurs.

    J'arrive actuellement traiter les requêtes venant des mobiles. Ils peuvent donc modifier des éléments qui sont en base de données. Je transmet les données du téléphone vers le site dans un json et un controller s'occupe du traitement. Dans l'autre sens, le site répond au téléphone en lui renvoyant un json.

    En revanche, concernant l'authentification je ne vois pas où il faut que je fasse des modifications car la procédure d'authentification diffère d'un simple envoi de données. Pour j'ai créé dans mon UserBundle un SecurityController qui hérite du SecurityController pour pouvoir intervenir dans le process de login. Mais je ne vois pas comment et où se positionne le code qui récupère les données de la requête et le traite.

    Avez vous quelques pistes de recherches ou certains d'entre vous ont-ils été confronté à ce genre de problématique ?

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,
    en somme il s'agit de web services REST en json
    Dans ce cas là l'authentification est généralement géré via l'authentification http basic.
    http://symfony.com/doc/2.2/book/secu...authentication

    donc probablement: créer un deuxieme Firewall en http_basic, et lui passer comme userProvider le même que celui du FOSUSerBundle.
    ensuite voir comment on passe ces données d'authentification.
    à titre d'exemple voir comment on procède avec le crawler de test de Symfony:
    http://symfony.com/doc/2.2/cookbook/...ntication.html

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    D'accord j'ai rajouté dans mon security.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
           test_log:
                pattern: ^/login$
                http_basic:
                    realm: "test api"
                    provider: fos_userbundle
    Je vais voir ce soir pour la suite.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    J'ai réussi à faire marché l'authentification http basic seule en désactivant main firewall "main". Actuellement j'ai dans mon 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
     
    firewalls:
            main:
                pattern: ^/
                form_login:
                    provider: fos_userbundle
                    csrf_provider: form.csrf_provider
                    check_path: /login_check
                    login_path: /login
                logout:       true
                anonymous:    true
    test_log:
                pattern: ^/
                anonymous: ~
                http_basic:
                    realm: "test"
                    provider: fos_userbundle

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Maintenant je cherche un moyen de faire en sorte que les app mobiles soient redirigés vers mon firewall en http basic.

    Du coup je pense mettre sous une route /api tout ce qui est relatif à l'api. Or j'ai mon firewall main qui a un pattern ^/. Du coup c'est lui qui récupère tout :/.
    Du coup, je pense que le pattern du main firewall deviendra /xxx. Du coup je pense que je pourrais m'authentifier par appli mobile et par le site sans que l'un perturbe l'autre.

  6. #6
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Bonjour,

    Tu peux aussi voir du coté d'un firewall perso avec un listener du genre est ce que tu es un appareil mobile si oui, ben hop je fais une authentification différente.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci, j'ai fait quelques recherches sur ta solution. Je vois comment faire un listener mais je ne sais pas quoi mettre dedans. Je pense que je vais changer mes routes et changer mon security.yml de sorte que l'appli mobile tombe sur http basic en premier :
    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
     
     
           mobile:
                pattern: ^/mobile
                anonymous: ~
                http_basic:
                    realm: "mobile authentication"
                    provider: fos_userbundle
     
           main:
                pattern: ^/
                form_login:
                    provider: fos_userbundle
                    csrf_provider: form.csrf_provider
                    check_path: /login_check
                    login_path: /login
                logout:       true
                anonymous:    true

  8. #8
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    un billet de blog qui est en plein dans ton problème (trouvé sur le blog de symfony)
    http://obtao.com/blog/2013/06/config...t-with-chrome/
    noter la conclusion "Soon we will write another article about “How to handle wsse connexion between Android and Symfony2 Rest based API”

    donc à priori c'est le protocole WSSE qui serait le plus approprié (et en plus son intégration est documenté pour SF: http://symfony.com/doc/2.2/cookbook/..._provider.html)

    le http_basic reste valable, mais il est préférable de passer par du https

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci pour le lien, j'avais déjà entendu parler du WSSE par le cookbook mais je n'avais pas réussi à le mettre en place. Pour l'instant je reste sur du http_basic avec https. D'ici quelques semaines (et donc un peu plus d'expérience ) , je passerais sur une authentification WSSE.

Discussions similaires

  1. Azerbaïdjan : trahi par une application mobile ?
    Par Hinault Romaric dans le forum Actualités
    Réponses: 8
    Dernier message: 14/10/2013, 15h40
  2. Application j2ee comunique avec une application Mobile
    Par herguem dans le forum Java EE
    Réponses: 8
    Dernier message: 03/02/2010, 07h13
  3. Déploiement d'une application mobile avec .cab et .msi
    Par Nixar dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 21/07/2009, 00h41
  4. Probleme avec des logs générés par une application
    Par yayamo dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 16/04/2008, 14h41
  5. Réponses: 2
    Dernier message: 18/01/2006, 17h36

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