@alexmixaylov

Как сконфигурировать UserProvider для Oauth(azure)?

Я пытаюсь настроить авторизацию при помoщи Azure AD
Установил бандл HWIOAuthBundle
настроил креды
#config/packages/hwi_oauth.yaml
hwi_oauth:
    # list of names of the firewalls in which this bundle is active, this setting MUST be set
    firewall_names: [azure]
    resource_owners:
        microsoft:
            type:                azure
            client_id:           '%env(MICROSOFT_CLIENT_ID)%'
            client_secret:       '%env(MICROSOFT_CLIENT_SECRET)%'
            scope:                User.Read offline_access

            options:
                application: common

добавил роут
#config/routes.yaml
microsoft_login:
    path: /oauth-login/check-microsoft

#config/routes/hwi_oauth_routing.yaml
hwi_oauth_redirect:
    resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
    prefix:   /connect

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

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

Также сконфигурировал файрвол и указал провайдера
#config/packages/security.yaml
security:
    enable_authenticator_manager: true
    # https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
    password_hashers:
        Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'
    # https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
    encoders:
        App\Entity\User:
            algorithm: bcrypt
    providers:
        users_in_memory: { memory: null }
        entity_provider:
            entity:
                class: App\Entity\User
                property: username
        microsoft_user_provider:
            id: app.custom.user_provider
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern: ^/
            provider: entity_provider
            form_login:
                login_path: login_admin
                check_path: login_admin
                default_target_path: admin_contract_list
                always_use_default_target_path: true
            logout:
                path: logout_admin
                target: login_admin

        azure:
            pattern: ^/
            oauth:
                resource_owners:
                    microsoft: "/oauth-login/check-microsoft"
                login_path: /oauth-login
                use_forward: false
                failure_path: /oauth-login
                oauth_user_provider:
                    service:  mf.oauth_aware.user_provider.service
                provider: microsoft_user_provider

    access_control:
#      - { path: ^/, roles: ROLE_USER }
        - { path: ^/oauth-login, roles: PUBLIC_ACCESS }


В итоге я получаю ссылку по которой можно перейти для логина (hwi_oauth_service_redirect)
Успешно прохожу процесс аутентификации и после редиректа с сервера авторизации попадаю на redirect_uri уазанный в настройках Azure AD
Респонс прилетает с параметрами code, state
http://localhost:8001/oauth-login/check-microsoft?code=M.R3_BAY.a40cbc79.....&state=eyJjc3JmX3Rva2VuIjoiMjhiMzZ....


Здесь я решительно не понимаю что делать
как обработать этот респонс.
Я понимаю что здесь каким то образом должен подключится user provider, которого я указал в настройках
Но вообще не врубаюсь как....

PS Если кто то хочет написать насколько я тупой, можете не трудиться, я сам знаю :)
Если задел чьи то религиозные чувства, "оскверняя Симфони" своим непониманием - простите, не имел цели задеть чувства верующих :)
Если кто то может помочь страждущему - помогите, два дня мучаюсь
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы