Security Symfony2-FOSOauthServerBundle-防火墙配置-路由白名单
我的目标是让所有路由都在防火墙保护的API下,除了一些路由。 我有如下防火墙配置:Security Symfony2-FOSOauthServerBundle-防火墙配置-路由白名单,security,symfony,oauth,firewall,fosoauthserverbundle,Security,Symfony,Oauth,Firewall,Fosoauthserverbundle,我的目标是让所有路由都在防火墙保护的API下,除了一些路由。 我有如下防火墙配置: security: acl: connection: default providers: fos_userbundle: id: fos_user.user_provider.username_email encoders: FOS\UserBundle\Model\UserInterface: sha512 firewalls: oauth
security:
acl:
connection: default
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
encoders:
FOS\UserBundle\Model\UserInterface: sha512
firewalls:
oauth_token:
pattern: ^/oauth/v2/token
security: false
oauth_authorize:
pattern: ^/oauth/v2/auth
form_login:
provider: fos_userbundle
check_path: /oauth/v2/auth_login_check
login_path: /oauth/v2/auth_login
anonymous: true
api:
pattern: ^/.*
fos_oauth: true
stateless: true
anonymous: false
access_control:
- { path: ^/, methods: [GET], roles: [ IS_AUTHENTICATED_ANONYMOUSLY ]}
- { path: ^/doc, methods: [GET], roles: [ IS_AUTHENTICATED_ANONYMOUSLY ]}
- { path: ^/resque, methods: [GET], roles: [ IS_AUTHENTICATED_ANONYMOUSLY ]}
- { path: /monitor, methods: [GET], roles: [ IS_AUTHENTICATED_ANONYMOUSLY ]}
- { path: /users, methods: [POST], roles: [ IS_AUTHENTICATED_ANONYMOUSLY ]}
- { path: /users/me/registration/confirm, methods: [GET], roles: [ IS_AUTHENTICATED_ANONYMOUSLY ]}
- { path: /users/me/email/confirm, methods: [GET], roles: [ IS_AUTHENTICATED_ANONYMOUSLY ]}
- { path: /instants/.*, methods: [PUT], roles: [IS_AUTHENTICATED_ANONYMOUSLY ]}
- { path: ^/_profiler, roles: [IS_AUTHENTICATED_ANONYMOUSLY]}
- { path: ^/_wdt, roles: [IS_AUTHENTICATED_ANONYMOUSLY]}
- { path: ^/_configurator, roles: [IS_AUTHENTICATED_ANONYMOUSLY]}
- { path: /.*, roles: [ IS_AUTHENTICATED_FULLY ]}
但是如果没有访问令牌,则无法访问路由/resque
、/monitor
和其他路由。
我的配置是否有问题?或者不可能实现路由白名单?我遇到了同样的问题,我通过实现另一个防火墙解决了这个问题。不,这张路牌不会被检查。我在模式中加入了另一个正则表达式。 不要忘了将此防火墙放在api防火墙前面,因为您有regex“匹配所有”
您可以在api模式中使用异常:
api:
pattern: ^/api(?!/doc)(?!/user/add)(?!/user/availability) # All URLs are protected except api/doc ; api/user/add ; api/user/availability
fos_oauth: true # OAuth2 protected resource
stateless: true # Do no set session cookies
anonymous: false # Anonymous access is not allowed
有了这个,你就不需要描述了
access_control:
- ...
@Genar没有,但我通过集成另一种OAuth grant_类型(客户端_凭据)解决了我的问题。我在API中没有任何公共路由,但客户端可以在没有用户身份验证的情况下向某个端点发出请求。@AngeloGiuffredi我处于相同的情况,您是如何禁用某些指向客户端的端点/路由的\u凭据授予\u类型的?
access_control:
- ...