Ho un'API di base che autentica gli utenti utilizzando FOSOAuthServerBundle. Gli utenti possono avere ruoli ROLE_USER e ROLE_ADMIN. Sulla base dei documenti FOSOAuthServerBundle, il comportamento predefinito consiste nell'utilizzare gli ambiti come ruoli, quindi ho pensato che quando ho un utente regolare, il pacchetto restituisce scope: user
nella risposta e, quando è un utente amministratore, restituisce scope: admin
. Ma non funziona così. Il pacchetto restituisce tutto ciò che è configurato nella voce supported_scopes
. Di seguito è il mio config.yml
.Come gestire gli ambiti ROLES e FOSOAuthServerBundle
fos_oauth_server:
service:
options:
supported_scopes: user admin
sezione My access_control
in security.yml
è vuoto, e la mia sezione firewalls
è qui sotto:
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
In questo modo il fascio di tornare sempre user admin
come campo di applicazione, anche se l'utente non ha il ruolo ROLE_ADMIN.
{
"access_token": "ZGQ2ODE5ZjAzNTZkOWY0OWMyNmZmODE4MjcwZTJmYjExNzY0NzQxOTRmMzk4NzA2Mjc2NjIyZmY1ZDgwMzk4NA"
"expires_in": 3600
"token_type": "bearer"
"scope": "user admin"
"refresh_token": "NmM5ZGFmNzBiNTNjYmQzMTQ1MTk0ODJjOTAxMWU0YWIwMzM1MzgyODg4ZTAzNTI5ZTk2MDc3OGU2MTg0MWZiMA"
}
Cosa mi manca? Il ruolo utente non è associato all'ambito token? C'è un modo migliore per sapere se il mio utente è un amministratore o no?
Forse non è il tuo 'security.yml' ed è incollato da' config.yml'? Potresti fornire la sezione 'access_control:' da te 'security.yml'? –
Hai ragione Illya. Modifica la mia domanda. –