如何添加/激活AuthenticationProvider而不在防火墙内使用它?

时间:2019-02-18 13:11:22

标签: symfony authentication fosuserbundle

AuthenticationProvider添加到内核的正确方法是什么?在security.yml文件中创建一个虚拟条目是可行的,但似乎很麻烦。

长话:

我正在为现有的基于Symfony的Web服务创建Amazon Alexa技能。

要检查请求是否被授权,我必须从请求中手动提取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

现在提供程序可用,并且上面的代码有效。但是,添加虚拟防火墙只是为了添加提供程序似乎不是最优雅的解决方案。正确的方法是什么?

0 个答案:

没有答案