HWIOAuthBundle `Произошло исключение аутентификации`
У меня проблема с HWIOAuthBundle
(FOSUserBundle
интеграция).
Нажмите на ссылку /connect/google
, этот экран появляется. (Экран размыт, потому что это электронная почта клиента)
затем вернитесь к обратному URL /login/check-google
он перенаправлен на /login
и показать это сообщение
An authentication exception occurred.
Если я наберу /login/check-google
напрямую ничего не происходит и просто перенаправляется login
,
Понятия не имею, что такое /login/check-google
стр.
Как я могу проверить??? (Я застрял в этой проблеме на одну неделю, я обновляю и обновляю статью.)
Моя среда
- Symfony 2.8.14
- HWIOAuthBundle 0.6.0
- FOSUserBundle 2.0.1
security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
# if you are using Symfony < 2.8, use the following config instead:
# csrf_provider: form.csrf_provider
logout: true
anonymous: true
oauth:
resource_owners:
google: "/login/check-google"
login_path: /login
use_forward: false
failure_path: /login
oauth_user_provider:
service: my_user_provider
login:
pattern: ^/login$
security: false
access_control:
- { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
config.yml
hwi_oauth:
connect:
account_connector: my_user_provider
firewall_names: [main]
fosub:
username_iterations: 30
properties:
google: google_id
resource_owners:
google:
type: google
client_id: XXXXXXXX
client_secret: XXXXXXXXXX
scope: "email profile"
service.xml
<parameters>
<parameter key="my_user_provider.class">Acme\UserBundle\Security\Core\User\FOSUBUserProvider</parameter>
</parameters>
<services>
<service id="my_user_provider" class="%my_user_provider.class%">
<argument type="service" id="fos_user.user_manager"/>
<argument type="service" id="service_container" />
<argument type="collection">
<argument key="google">google_id</argument>
</argument>
</service>
</services>
routing.yml
admin_area:
resource: "@SonataAdminBundle/Resources/config/routing/sonata_admin.xml"
prefix: /admin
_sonata_admin:
resource: .
type: sonata_admin
prefix: /admin
acme_member:
resource: "@AcmeMemberBundle/Resources/config/routing.yml"
prefix: /member
_user_bundle:
resource: "@UserBundle/Resources/config/routing.yml"
acme_top:
resource: "@AcmeTopBundle/Resources/config/routing.yml"
prefix: /
fos_user_group:
resource: "@FOSUserBundle/Resources/config/routing/group.xml"
prefix: /group
sonata_page_cache:
resource: '@SonataCacheBundle/Resources/config/routing/cache.xml'
prefix: /
#HWIOAuthBundle routes
hwi_oauth_security:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /login
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
prefix: /connect
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /connect
facebook_login:
path: /login/check-facebook
google_login:
path: /login/check-google
fos_js_routing:
resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"
1 ответ
Я решил свою проблему.
Понижение >>> HWIAuthBundle 0.4.3
и добавить это в config.yml
hwi_oauth:
http_client:
verify_peer: false
Это из-за разницы https / http. Google запрашивает https. Однако он пропускает проверку https.
проверьте последний комментарий также.
Я не знаю, если hwi/oauth-bundle
изменился с момента последнего ответа, но теперь нет необходимости понижать версию пакета.
Действительно http_client
опция была удалена в версии 0.6.x, потому что внутренний Http-клиент был заменен на HttplugBundle.
Правильный способ отключения опции "verify_peer" теперь описан в официальной документации здесь: https://github.com/hwi/HWIOAuthBundle/blob/master/Resources/doc/internals/configuring_the_http_client.md