WedX - журнал о программировании и компьютерных науках

FOSRestBundle добавляет базовую HTTP-аутентификацию

Я добавил FOSRestBundle в свое приложение symfony2, в этом приложении уже была публичная область и область администратора, защищенные FOSUserBundle.

Моя проблема в том, что я не заставляю браузер запрашивать пользователя/пароль, а также при подключении API с помощью curl я не авторизуюсь.

# app/config/security.yml
providers:
    user:
        id: fos_user.user_provider.username
    administrator:
        entity: { class: App\UserBundle\Entity\Administrator, property: login }

Теперь я добавил область API и хочу использовать базовую HTTP-аутентификацию, поэтому добавил нового провайдера.

    api_provider:
        memory:
            users:
                user1: { password: 1234, roles: 'ROLE_API_USER' }
                user2: { password: 1234, roles: 'ROLE_API_USER' }

И новый брандмауэр:

firewalls:
    backend:
        pattern:        ^/admin/
        provider:       administrator
        anonymous:      ~
        form_login:
            login_path: /admin/login
            check_path: /admin/login_check
        logout:
            path:       /admin/logout
            target:     /admin/
    api:
        pattern:  ^/api/
        provider: api_provider
        anonymous: ~
        # form_login: false # <- needed or not?
        http_basic:
            realm: "Api"
    main:
        pattern: ^/
        form_login:
            login_path: /login
            check_path: /login_check
            provider: user
            csrf_provider: form.csrf_provider
        logout:       true
        anonymous:    true

В этот момент я жду 403 - Forbidden, поэтому, если я добавлю это так security.yml:

access_control:
    - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/user, role: ROLE_ADMIN_USUARIOS }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/error, role: ROLE_USER }
    - { path: ^/api/, role: ROLE_API_USER }
    - { path: ^/api/v1/users, role: ROLE_API_USER }

После этого я получаю 401 - unauthorized.

Я, хотя базовая аутентификация http заставила браузер запрашивать пользователя/пароль, чего не происходит. Хотя, наконец, мне нужно, чтобы сервер принимал базовый заголовок аутентификации в http-запросах, таких как этот< /а>.

Я что-то пропустил?

Спасибо


  • Если вы решили свою проблему, вы можете опубликовать ее как ответ на свой вопрос :) 26.07.2014

Ответы:


1

РЕШЕНИЕ

По-видимому, единственный способ вызвать эти URL-адреса сейчас — через http-соединение, например curl, добавив заголовок авторизации, например:

curl -u "user:pass" "https://example.com/app_dev.php/api/v1/users/1.json"

Доступ через браузер не запрашивает пользователя/пароль.

Дополнительно для корректной работы нового провайдера требовался кодировщик:

# app/config/security.yml
encoders:
    Symfony\Component\Security\Core\User\User: plaintext
27.07.2014
  • Мне тоже пришлось поменять anonymous на false. 04.05.2015
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]