Hwi_oauth не может подключиться к FOS_OAUTH_SERVER

Я просмотрел несколько решений с централизованным сервисом входа в систему.

Моя ситуация выглядит следующим образом:

  • Центральный вход под login.domain.tld
  • Бэкэнд под backend.domain.tld
  • Служба поддержки клиентов по адресу: support.domain.tld
  • интерфейс под frontend.domain.tld
  • учетная запись и счета на account.domain.tld

Я настроил друзей сервера Symfony oauth с правильной маршрутизацией, как указано в конфигах, включая таблицы и т. д.

Я также добавил токен входа в систему oauth и т. д. для backend.domain.tld.

насколько я мог видеть, все настроено так, как должно быть. (не так много для настройки)

На бэкенде я установил пакет hwi_oauth в версии 0.6.x.

Это файлы конфигурации:

httplug.yaml:

    httplug:
        plugins:
            redirect:
                preserve_header: true
        discovery:
            client: 'auto'
        clients:
            default:
                factory: 'httplug.factory.curl'
            app:
                http_methods_client: true
                plugins:
                    - 'httplug.plugin.content_length'
                    - 'httplug.plugin.redirect'
            hwi_special:
                factory: 'httplug.factory.guzzle6'
                config: # You pass here the Guzzle configuration, exactly like before.
                    timeout: 10
                    verify: false
                    max_redirects: 1
                    ignore_errors: false

HWI_oauth.yaml

    hwi_oauth:
        http:
            client: httplug.client.hwi_special
        firewall_names: [ main ]
        resource_owners:
            domain_oauth:
                type: oauth2
                client_id: '%env(OAUTH_CLIENT_ID)%'
                client_secret: '%env(OAUTH_CLIENT_TOKEN)%'
                access_token_url: '%env(OAUTH_PROVIDER)%'
                authorization_url: '%env(OAUTH_AUTHORISATION)%'
                options:
                    csrf: true
                infos_url:           '%env(OAUTH_USERINFO)%'
                scope:               "read"
                user_response_class: HWI\Bundle\OAuthBundle\OAuth\Response\PathUserResponse
                paths:
                    identifier: id
                    nickname:   username
                    realname:   fullname

файлы env необходимы, так как мне нужно заменить URL-адреса системы разработки (xxx.domain.test на его продуктивный аналог)

безопасность.yaml

security:
  access_control:
    - path: ^/login
      roles: [ IS_AUTHENTICATED_ANONYMOUSLY ]
      requires_channel: https
    - path: ^/
      roles: ROLE_STAFF
      requires_channel: https
  providers:
    domain_provider:
      entity:
        class: Domain\Library\EntitiesBundle\Entities\User\User
        property: email
  # - { path: ^/admin, roles: ROLE_ADMIN }
  # - { path: ^/profile, roles: ROLE_USER }
  # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
  firewalls:
    dev:
      pattern: ^/(_(profiler|wdt)|css|images|js)/
      security: false
    main:
      anonymous: ~
      oauth:
        resource_owners:
          domain_oauth: "/login/domainLogin"
        login_path: "/login"
        use_forward: true
        failure_path: "/login"

        oauth_user_provider:
          service: Domain\Library\ClientAuthBundle\Authorisation\HwiOAuthProvider
  # Easy way to control access for large sections of your site
  # Note: Only the *first* access control that matches will be used
  role_hierarchy:
    ROLE_GUEST:
    ROLE_USER: [ ROLE_GUEST ]
    ROLE_STAFF: [ ROLE_USER ]

Bundle Domain\Library\EntitiesBundle\Entities\User\User является частным Bundle, содержащим все миграционные данные и таблицы сущностей.

и последнее, но не менее важное: twi_oauth_routing.yaml

    # app/config/routing.yml
    hwi_oauth_redirect:
        resource: "@HWIOAuthBundle/Resources/config/routing/redirect_41.xml"
        prefix:   /connect

    hwi_oauth_connect:
        resource: "@HWIOAuthBundle/Resources/config/routing/connect_41.xml"
        prefix:   /connect

    hwi_oauth_login:
        resource: "@HWIOAuthBundle/Resources/config/routing/login_41.xml"
        prefix:   /login

    domain_oauth_login:
        path: /login/domainLogin

Трудность, с которой я сейчас сталкиваюсь, заключается в том, что я не вижу попытки подключения в системе входа в систему, когда я вызываю backend.domain.test/login Я вижу ссылку, указывающую на /connect/domain-oauth (которую я нигде не настраивал). Если я нажму на это, он перенаправит меня на /login Но я не вижу связи в логах.

Есть какие-нибудь подсказки, что я курировал? Я пытаюсь заставить это работать около недели. Проработал несколько примеров, но я не могу заставить его работать должным образом.

Любая помощь приветствуется.

Программное обеспечение: Symfony 4.2, PHP7.3 MySQL 8, Redis в качестве кэша


Обновление: мне удалось заставить его работать до сих пор. Мне не хватало правила access_control для пути к пути /connect/.....

Теперь я вижу кнопки разрешить/запретить.

Но как только я нажимаю «Разрешить», я получаю в профилировщике следующий URL-адрес, который перенаправляется на страницу входа:

https://baclend.domain.tld/login/domainLogin?error=invalid_scope&error_description=An%20unsupported%20scope%20was%20requested.&state=51057e2ba6bd1540e5981e193c24ac9c

Что я упустил? Я не знаю, что эта ошибка пытается сказать мне.

Я смог решить проблему.

Chris West 22.03.2019 08:58

При создании клиента в fos Oauth Server я упустил добавить дополнительную область для авторизации.

Chris West 22.03.2019 08:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема была решена.

Проблемы, связанные с проблемами в настройках брандмауэра и отсутствием области авторизации.

Другие вопросы по теме