モバイルアプリからデータにアクセスするための API を含む Symfony2 を使用して Web サイトを開発しています。Web サイトでの認証には FOSUserBundle を使用し、API には FOSRestBundle と FOSOAuthServerBundle を使用します。
http://blog.tankist.de/blog/2013/07/17/oauth2-explained-part-2-setting-up-oauth2-with-symfony2-using-fosoauthserverbundle/のチュートリアルに従ってバンドルを実装しました。
ユーザーのログインとパスワードの組み合わせを使用して API にログインできるように、パスワードを grant_type として使用します。バンドルから access_token を正常に取得しましたが、このトークン (例/api/user?access_token=MY_TOKEN
) を使用して API にアクセスしようとすると、常に Web サイトのホームページ (ログイン ページ) にリダイレクトされます。どこで何かを逃したのか本当にわかりません。
これが私の構成です:
#app/Resources/config.yml
fos_oauth_server:
db_driver: orm
client_class: Cubbyhole\ApiBundle\Entity\Client
access_token_class: Cubbyhole\ApiBundle\Entity\AccessToken
refresh_token_class: Cubbyhole\ApiBundle\Entity\RefreshToken
auth_code_class: Cubbyhole\ApiBundle\Entity\AuthCode
service:
user_provider: fos_user.user_manager
#app/Resources/security.yml
#Firewalls for OAuth2
oauth_token:
pattern: ^/oauth/v2/token
security: false
oauth_authorize:
pattern: ^/oauth/v2/auth
form_login:
provider: fos_userbundle
check_path: fos_user_security_check
login_path: fos_user_security_login
anonymous: true
api:
pattern: ^/api
fos_oauth: true
stateless: true
access_control:
- { path: ^/api/oauth/v2, roles: [ IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_ANONYMOUSLY ] }
- { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }