Как добавить / активировать AuthenticationProvider, не используя его в брандмауэре? - PullRequest
0 голосов
/ 18 февраля 2019

Как правильно добавить AuthenticationProvider в ядро?Создание фиктивной записи в файле security.yml работает, но выглядит довольно глупо.

Длинная история:

Я работаю над созданием навыка Amazon Alexa для моегосуществующие веб-службы на основе Symfony.

Чтобы проверить, должен ли запрос быть авторизован, мне нужно вручную извлечь AuthToken из запроса и передать его в AuthenticationManager:

public function alexaRequestAction(Request $request, AuthenticationManagerInterface $authenticationManager) {
    ...
    $accessToken = $this->getAuthTokenFromRequest($request);       

    if ($accessToken) {
        $token = new OAuthToken();
        $token->setToken($accessToken);

        try {
            $authToken = $authenticationManager->authenticate($token);                
            ...
        } catchcatch (AuthenticationException $e) {
            ...
        }  
    } else {
        // Request without a linked account...
    }
}

Это не с ProviderNotFoundException.Если я добавлю некоторые записи в Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager, чтобы посмотреть, какие провайдеры доступны, OAuthProvider не будет включен.

Я могу изменить это, добавив фиктивную запись в настройки брандмауэра:

// security.yml
security:
    firewalls:
        oauth_dummy:
            pattern   : ^/someDummyPath
            fos_oauth : true

Теперь провайдер доступен и приведенный выше код работает.Однако добавление фиктивного брандмауэра только для того, чтобы добавить провайдера, кажется не самым элегантным решением.Как правильно это сделать?

...