0

Я разработал службу APIRest для использования данных из мобильного приложения. Я использовал пакеты Symfony2: FOSOAuthServerBundle, FOSUserBundle и FOSRestBundle, и все работает нормально, но мне нужно различать пользователей панели управления и пользователей api, потому что теперь, если я попытаюсь пройти аутентификацию с помощью администратора из приложения, я получу токен, однако я только хотите получить действительный номер с пользователями api.Как ограничить, кто может получить действительный токен доступа?

К примеру, со следующими пользователями, я должен получить действительный маркер со вторым запросом и недопустимым ответом гранта с первым, но я получить действительный маркер с обеими из них:

adminuser (ROLE_ADMIN)

https://app.myweb.com/oauth/v2/token?username=adminuser&password=12345&client_id=...&client_secret=...&grant_type=password

appuser (ROLE_APP)

https://app.myweb.com/oauth/v2/token?username=appuser&password=12345&client_id=...&client_secret=...&grant_type=password

Большое спасибо за то, что поставили меня на правильный путь, чтобы решить это и извините за мой английский.

ответ

0

Из FOSOAuthServerBundle документации:

https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/doc/index.md#step-5-configure-fosoauthserverbundle

Создание провайдера пользователя и добавить его в конфигурацию fos_oauth_server:

fos_oauth_server: 
    ... 
    service: 
     user_provider: my_custom_user_provider_service 

Создание поставщика расширения Symfony \ Component \ Security \ Основные \ User \ UserProviderInterface и проверьте, предоставлен ли пользователь ROLE_APP. Документировано здесь:

http://symfony.com/doc/current/cookbook/security/custom_provider.html

Смежные вопросы