FOSOAuthServerBundle を使用してユーザーを認証する基本的な API があります。ユーザーは、ROLE_USER および ROLE_ADMIN ロールを持つことができます。FOSOAuthServerBundle docs に基づいて、デフォルトの動作はスコープをロールとして使用することであるため、通常のユーザーがいる場合はバンドルがscope: user
応答で返され、管理者ユーザーの場合はscope: admin
. しかし、それはこのように機能していません。バンドルは、supported_scopes
エントリで構成されているものをすべて返します。以下は私のconfig.yml
です。
fos_oauth_server:
service:
options:
supported_scopes: user admin
の私のaccess_control
セクションsecurity.yml
は空で、私のfirewalls
セクションは以下のとおりです。
firewalls:
users_create:
pattern: ^/v1/users
methods: [POST]
security: false
api:
pattern: ^/
security: true
fos_oauth: true
stateless: true
access_control:
# You can omit this if /api can be accessed both authenticated and anonymously
この方法ではuser admin
、ユーザーが ROLE_ADMIN ロールを持っていなくても、バンドルは常にスコープとして返されます。
{
"access_token": "ZGQ2ODE5ZjAzNTZkOWY0OWMyNmZmODE4MjcwZTJmYjExNzY0NzQxOTRmMzk4NzA2Mjc2NjIyZmY1ZDgwMzk4NA"
"expires_in": 3600
"token_type": "bearer"
"scope": "user admin"
"refresh_token": "NmM5ZGFmNzBiNTNjYmQzMTQ1MTk0ODJjOTAxMWU0YWIwMzM1MzgyODg4ZTAzNTI5ZTk2MDc3OGU2MTg0MWZiMA"
}
私は何が欠けていますか?ユーザー ロールはトークン スコープに関連付けられていませんか? ユーザーが管理者かどうかを知る良い方法はありますか?