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 :

[SF3 - FOSREST - FOSUSER - FOSOAUT] probleme access API


Sujet :

Symfony PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 1
    Points
    1
    Par défaut [SF3 - FOSREST - FOSUSER - FOSOAUT] probleme access API
    Bonjour,

    Je tourne en rond depuis plusieurs heures. Pour résumer simplement mon problème :

    Je fais une première requête http post qui récupère bien le token

    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
    [root@dev-rcn httpdocs]# http POST url/oauth/v2/token \
    >     grant_type=password \
    >     client_id=3_3bcbxd9e24g0gk4swg0kwgcwg4o8k8g4g888kwc44gcc0gwwk4 \
    >     client_secret=4ok2x70rlfokc8g0wws8c8kwcokw80k44sg48goc0ok4w0so0k \
    >     username=admin \
    >     password=admin
    HTTP/1.1 200 OK
    Cache-Control: no-store, private
    Connection: Keep-Alive
    Content-Type: application/json
    Date: Wed, 10 Aug 2016 08:52:00 GMT
    Keep-Alive: timeout=5, max=100
    Pragma: no-cache
    Server: Apache
    Transfer-Encoding: chunked
    X-Debug-Token: 50dd10
    X-Debug-Token-Link: 
    X-Powered-By: PHP/5.6.19
     
    {
        "access_token": "N2M3M2M1OGI2OWEwN2U5NDM2ZWFhMGFiMjhmMWZhY2RiOGMzZjFhYjhlMzEyMDZkMjI3M2M3N2JkODcxNDk1ZQ",
        "expires_in": 3600,
        "refresh_token": "MzgwZTc3NmUzZGQzY2VhZTc3NWI2NzQ0YTU4ZjViMGFjZjBiYzI3MGU1YjczNjA0YjNiYThlMmZiMDhjODA0Mg",
        "scope": null,
        "token_type": "bearer"
    }
    Et ensuite impossible de récupérer les données avec ce token

    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
    [root@vdev-rcn httpdocs]# http url/api/datas \ "Authorizat
    ion:Bearer N2M3M2M1OGI2OWEwN2U5NDM2ZWFhMGFiMjhmMWZhY2RiOGMzZjFhYjhlMzEyMDZkMjI3M2M3N2JkODcxNDk1ZQ"
    HTTP/1.1 401 Unauthorized
    Cache-Control: no-store, private
    Connection: Keep-Alive
    Content-Type: application/json
    Date: Wed, 10 Aug 2016 08:52:27 GMT
    Keep-Alive: timeout=5, max=100
    Pragma: no-cache
    Server: Apache
    Transfer-Encoding: chunked
    WWW-Authenticate: Bearer realm="Service", error="access_denied", error_description="OAuth2 authentication required"
    X-Debug-Token: 3ff60f
    X-Debug-Token-Link: 
    X-Powered-By: PHP/5.6.19
     
    {
        "error": "access_denied",
        "error_description": "OAuth2 authentication required"
    }
    Et quand j’autorise les connexions anonymes ça fonctionne bien

    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
    [root@dev-rcn httpdocs]# http GET url/api/datas     "Authorizatio
    n:Bearer YTY1N2YxMDc0YzdiZmY0YjBlZjM0YWZiODY1NzhhMTNmY2RiNTU3Zjc3NjVlNDdiMDgwYjYyMzg0MjFiMmIxOQ"
    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Connection: Keep-Alive
    Content-Type: application/json
    Date: Wed, 10 Aug 2016 08:27:06 GMT
    Keep-Alive: timeout=5, max=100
    Server: Apache
    Transfer-Encoding: chunked
    X-Debug-Token: 9c9475
    X-Debug-Token-Link: 
    X-Powered-By: PHP/5.6.19
     
    {
        "datas": [
            {
                "data01": "toto",
                "data02": "titi",
                "data03": "tutu",
                "id": 1
            },
            {
                "data01": "popo",
                "data02": "pipi",
                "data03": "pupu",
                "id": 2
            }
        ]
    }
    voici ma conf

    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
    # To get started with security, check out the documentation:
    security:
     
        providers:
            in_memory:
                memory: ~
     
        encoders:
            FOS\UserBundle\Model\UserInterface: sha512
     
        providers:
            fos_userbundle:
                id: fos_user.user_provider.username        # fos_user.user_provider.username_email does not seem to work (OAuth-spec related ("username + password") ?)
        firewalls:
            oauth_token:                                   # Everyone can access the access token URL.
                pattern: ^/oauth/v2/token
                security: false
            api:
                pattern: ^/api                             # All URLs are protected
                fos_oauth: true                            # OAuth2 protected resource
                stateless: true                            # Do no set session cookies
                anonymous: false                           # Anonymous access is not allowed
    routing.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
    api_tls:
        resource: "@ApiTlsBundle/Controller/"
        type:     annotation
        prefix:   /
     
    app:
        type:     rest
        resource: "@ApiTlsBundle/Resources/config/routing_api.yml"
     
    fos_user:
        resource: "@FOSUserBundle/Resources/config/routing/all.xml"
     
    NelmioApiDocBundle:
        resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
        prefix:   /info/doc
     
    fos_oauth_server_token:
        resource: "@FOSOAuthServerBundle/Resources/config/routing/token.xml"
    config.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
    nelmio_api_doc: ~
     
    fos_user:
        db_driver: orm
        firewall_name: api
        user_class: ApiTlsBundle\Entity\User
     
    # FOSRestBundle
    fos_rest:
        param_fetcher_listener: true
        body_listener: true
        format_listener: true
        view:
            view_response_listener: 'force'
            formats:
                xml: true
                json : true
            templating_formats:
                html: true
            force_redirects:
                html: true
            failed_validation: HTTP_BAD_REQUEST
            default_engine: twig
        routing_loader:
            default_format: json
            include_format: false
     
    fos_oauth_server:
        db_driver:           orm
        client_class:        ApiTlsBundle\Entity\Client
        access_token_class:  ApiTlsBundle\Entity\AccessToken
        refresh_token_class: ApiTlsBundle\Entity\RefreshToken
        auth_code_class:     ApiTlsBundle\Entity\AuthCode
        service:
            user_provider: fos_user.user_manager
    Ça parle a quelqu’un ce genre de problème ? hellllp

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    si tu autorises l'authenfication oauth: true alors j'imagine qu'il faut faire des choses pour le mettre en place. je ne connais pas assez pour t'en dire plus...

    avec fos_user tu te connectes via formulaire , un cookies sécurité est créé avec l'user dedans etc.... et donc tu es autorisé à naviguer sur lr site web.

    j'imagine que oauth c'est pareil, c'est une authorisation non pas via base de donnée comme fos_user mais par API.


    pour ça qu'il te dit je pense "access denied" error_description="OAuth2 authentication required"

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    j'imagine que oauth c'est pareil, c'est une authorisation non pas via base de donnée comme fos_user mais par API.
    en faite si oauth stoque en base de donnée les token avec des timestamps d'expiration, le tout lié a des users FOS et des clients oauth (il y a environ 4-5 entités a générer)

    J'ai suivi cette procédure sf2 pourtant simple .. https://gist.github.com/tjamps/11d617a4b318d65ca583

  4. #4
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    oubli le message précedent que j'ai écris.

    tu as pensé à vider le cache ?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    oui oui biensur , merci pour tes retours !

  6. #6
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    access_token est bien mis dans le header ?
    tu utilises postman ? pour tester ?

    (important: entre chaque modif, vide le cache)

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    oui oui le token est bien passé dans le header ,

    j'ai tester avec :


  8. #8
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    config.yml et security.yml semble bien configuré.

    à chaque demande d'access_token tu as bien un nouvel enregistrement dans la table refresh_oauth_token ? avec ton token dedans ?

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    oui

    il n'y a que la table "oauth2_auth_codes" qui reste vide

    c'est vraiment au moment de l’accès de la ressource que ça bloque

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    info supplémentaire :

    J'ai tester rest-console , un outil sous chrome qui permet d'envoyer des headers plus facilement sur des url .. et j'ai le meme retour https://chrome.google.com/webstore/d...penpphppikmonn

    du coup j'ai ete voir les log symfony

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [2016-08-10 15:42:07] request.INFO: Matched route "{route}". {"route":"get_materiels","route_parameters":{"_controller":"ApiTlsBundle\\Controller\\MaterielsController::getMaterielsAction","_format":"json","_route":"get_materiels"},"request_uri":"http://rcn-dev/app_dev.php/api/materiels","method":"GET"} []
    [2016-08-10 15:42:07] security.INFO: An AuthenticationException was thrown; redirecting to authentication entry point. {"exception":"[object] (Symfony\\Component\\Security\\Core\\Exception\\AuthenticationCredentialsNotFoundException(code: 0): A Token was not found in the TokenStorage. at /var/www/vhosts/intranetV2/httpdocs/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall/AccessListener.php:53)"} []
    [2016-08-10 15:42:07] security.DEBUG: Calling Authentication entry point. [] []
    En gros il ne trouve pas le token envoyer .. et la question c'est comment debugger ca ?

  11. #11
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    essayes d'espionner le vendor à l'endroit ou il ne trouve pas le token et regarde la raison.. si il y est avant etc.... avec des dump

    parfois en lisant le code, on remarque une condition IF ....... alors qu'il doit y aller dedans et on comprends pourquoi ça bloque...

  12. #12
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    pour ma part, mon projet REST etait sous SF2.8 et l'encoders est en plainText sinon j'ai les mêmes configuration que toi.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2016
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    oui un truc bien chiant en perspective ..

    je viens de me refaire la procédure sur du sf 2.8 au lieu de 3.1.3 .. et ça fonctionne ..

    aie aie .. mais bon au moin j'avance ca fait du bien

Discussions similaires

  1. Probleme Access
    Par jmjmjm dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/12/2005, 21h23
  2. Probleme Pointeur - API
    Par syannic dans le forum C
    Réponses: 18
    Dernier message: 10/10/2005, 09h51
  3. [EXE] Problème avec Api
    Par Regis.C dans le forum Général Java
    Réponses: 5
    Dernier message: 14/03/2005, 11h09
  4. Probleme D'API WIN32 - NetServerEnum
    Par gnolfy dans le forum C++Builder
    Réponses: 1
    Dernier message: 22/11/2004, 20h39
  5. Probleme connection API C
    Par Biou Pink Powa dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 29/04/2004, 12h04

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