доступ к методам /api на сервере oauth2

Я пытаюсь создать сервер oauth2 на основе FOSOauthServerBundle, FOSRestBundle и FOSUserBundle. Я создал демонстрационное приложение для проверки моего oauth-server, и оно не смогло получить данные через запрос GET.

(получена ошибка 401 ' error="access_denied", error_description="Требуется аутентификация OAuth2" '),

несмотря на то, что пользователь прошел аутентификацию и клиент правильно получил токен доступа.

Как мне реализовать контроллеры API, чтобы oauth2 выполнял процесс аутентификации?

Кроме того, я хотел бы взглянуть на реальный пример рабочего сервера oauth, основанный на этих пакетах, чтобы я мог проверить на нем свое приложение.

моя безопасность.yml:

jms_security_extra:
    secure_all_services: false
    expressions: true

security:
acl:
    connection: default

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

providers:
    in_memory:
        memory:
            users:
                user:  { password: userpass, roles: [ 'ROLE_USER' ] }
                admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
    fos_userbundle:
        id: fos_user.user_provider.username

encoders:
      FOS\UserBundle\Model\UserInterface: sha512
      Symfony\Component\Security\Core\User\User: plaintext

firewalls:
    api:
        pattern: ^/api
        fos_oauth: true
        stateless: true

    oauth_authorize:
        pattern: ^/oauth/v2/auth
        form_login:
            provider: fos_userbundle
            check_path: /oauth/v2/auth_login_check
            login_path: /oauth/v2/auth_login
            use_referer: true
        anonymous: true

    oauth_token:
        pattern: ^/oauth/v2/token
        security: false  

    secured_area:
        pattern:    ^/
        anonymous: ~
        form_login:
            provider: fos_userbundle
            check_path: /login_check
            login_path: /login
            always_use_default_target_path: true
            default_target_path: /

access_control:
    - { path: ^/oauth/v2/auth_login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/oauth/v2/auth, role: ROLE_USER }
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY}
    - { path: ^/, roles: ROLE_USER }
    - { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }

Спасибо.


person user1976651    schedule 14.01.2013    source источник
comment
решил это. проблема заключалась в том, что я не отправлял токен доступа в качестве параметра в своих запросах, а устанавливал его в заголовке.   -  person user1976651    schedule 14.01.2013
comment
возможно, вы могли бы ответить на свой вопрос, чтобы помочь другим людям, экспериментирующим с теми же проблемами.   -  person Boris Guéry    schedule 03.02.2014
comment
@ user1976651, можете ли вы поделиться с нами кодом, передающим токен доступа в запросе? Этот код является javascript?   -  person Amine Jallouli    schedule 05.10.2016


Ответы (1)


Отправка ответа, чтобы закрыть открытый вопрос.

Отказ в доступе вызван тем, что запрос не содержит токена доступа. Обратитесь к документации с разделом «Создание клиента и использование».

https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/doc/index.md

person George    schedule 07.04.2014