Как ограничить, кто может получить действительный токен доступа?
Я разработал сервис APIRest для использования данных из мобильного приложения. Я использовал комплекты Symfony2: FOSOAuthServerBundle, FOSUserBundle и FOSRestBundle и все работает нормально, но мне нужно различать пользователей панели администратора и пользователей API, потому что теперь, если я попытаюсь пройти аутентификацию с администратором из приложения, я получу токен, однако я только хочу получить действительный с пользователями API.
Например, со следующими пользователями я должен получить действительный токен со вторым запросом и недопустимый ответ о предоставлении гранта с первым, но я получу действительный токен с обоими из них:
adminuser (ROLE_ADMIN)
appuser (ROLE_APP)
Большое спасибо за правильное решение этой проблемы и извините за мой английский.
1 ответ
Из документации FOSOAuthServerBundle:
Создайте провайдера пользователя и добавьте его в конфигурацию fos_oauth_server:
fos_oauth_server:
...
service:
user_provider: my_custom_user_provider_service
Создайте провайдера, расширяющего интерфейс Symfony\Component\Security\Core\User\UserProviderInterface, и проверьте, имеет ли пользователь ROLE_APP. Документировано здесь:
http://symfony.com/doc/current/cookbook/security/custom_provider.html