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