【发布时间】:2025-12-12 03:10:02
【问题描述】:
我有两个防火墙,一个用于我的 API 调用(受 WSSE 保护),一个用于我的应用程序。两者都运行良好,但我需要在 api 防火墙和应用程序防火墙上同时对用户进行身份验证,我不能这样做。
我的 security.yml
firewalls:
# Firewall for the api
wsse_secured:
pattern: ^/api/.*
wsse:
nonce_dir: null
lifetime: 300
provider: fos_userbundle
context: user
# Firewall for the application
main:
pattern: /.*
form_login:
provider: fos_userbundle
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: espace_perso
always_use_default_target_path: false
failure_path: fos_user_security_login
logout:
path: fos_user_security_logout
target: fos_user_security_login
oauth:
resource_owners:
facebook: "/login/check-facebook"
linkedin: "/login/check-linkedin"
google: "/login/check-google"
login_path: fos_user_security_login
oauth_user_provider:
service: bg.oauth.user_provider
anonymous: true
context: user
我已经阅读了其他帖子(this question、this one 和 this one),如您所见,添加上下文不适用于我的情况。
我尝试手动添加我需要的 wsse 标头,或者使用事件为我的用户创建一个新的 WsseToken,但没有成功。
我真的需要帮助解决这个问题,这一定很常见......
【问题讨论】:
-
Wsse 通过 HTTP 标头和 form_login 通过 cookie 进行管理。您是如何尝试访问您的 API 的?
-
如您所说,我通过 HTTP 标头访问我的 API。例如,我的“主”防火墙后面有一个表单,但这个表单的操作在我的“wsse_secured”防火墙后面。因此,当我单击“验证”时,“wsse_secured”防火墙会向我发送 403,因为我没有在此防火墙上进行身份验证。