Symfony 5.4配置drenso/symfony-oidc-bundle遇错求助
配置drenso/symfony-oidc-bundle时遇到的问题
我正尝试使用drenso/symfony-oidc-bundle配置OpenID连接,已完成bundle的基础配置,.env中对应变量也已设置,但在security.yml中启用oidc后出现错误(错误截图:
),以下是我的配置内容,希望用过该包的开发者帮忙排查问题。
drenso_oidc配置
drenso_oidc: #default_client: default # The default client, will be aliased to OidcClientInterface clients: default: # The client name, each client will be aliased to its name (for example, $defaultOidcClient) # Required OIDC client configuration well_known_url: '%env(OIDC_WELL_KNOWN_URL)%' client_id: '%env(OIDC_CLIENT_ID)%' client_secret: '%env(OIDC_CLIENT_SECRET)%' # Extra configuration options #redirect_route: '/login_check' #custom_client_headers: [] # Add any extra client #link: # Will be accessible using $linkOidcClient #well_known_url: '%env(LINK_WELL_KNOWN_URL)%' #client_id: '%env(LINK_CLIENT_ID)%' #client_secret: '%env(LINK_CLIENT_SECRET)%'
security.yml配置
security: enable_authenticator_manager: true password_hashers: App\Entity\BackUser: auto App\Entity\FrontUser: auto providers: users: chain: providers: [back_users, front_users] back_users: entity: { class: App\Entity\BackUser, property: username } front_users: entity: { class: App\Entity\FrontUser, property: email } role_hierarchy: ROLE_SUPER_ADMIN: ROLE_ADMIN ROLE_ADMIN: [ROLE_REDACTOR, ROLE_ALLOWED_TO_SWITCH] ROLE_REDACTOR: ROLE_READER ROLE_READER: ROLE_USER firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false back: context: global_context pattern: ^/back #anonymous: ~ user_checker: App\Security\Checker\UserChecker provider: back_users switch_user: provider: users role: CAN_SWITCH_USER form_login: provider: users check_path: back_security_login login_path: back_security_login #csrf_token_generator: security.csrf.token_manager enable_csrf: true default_target_path: back_static_index success_handler: App\Security\Handler\LoginSuccessHandler failure_handler: App\Security\Handler\LoginFailureHandler logout: path: back_security_logout target: back_security_login handlers: - App\Security\Handler\LogoutHandler front: context: global_context pattern: ^/ oidc: ~ #anonymous: ~ user_checker: App\Security\Checker\UserChecker provider: front_users switch_user: provider: users role: CAN_SWITCH_USER # form_login: # provider: users # check_path: front_index # login_path: front_index # #csrf_token_generator: security.csrf.token_manager # enable_csrf: true # default_target_path: front_index # success_handler: App\Security\Handler\LoginSuccessHandler logout: path: front_security_logout target: front_index handlers: - App\Security\Handler\LogoutHandler
可能的排查方向
- 启用匿名访问:OIDC认证流程需要用户先以匿名身份访问跳转入口,取消
front防火墙中#anonymous: ~的注释,开启匿名访问。 - 配置redirect_route:drenso_oidc默认回调路由是
oidc_check,如果需要自定义路径,需确保redirect_route指向存在的有效路由,比如你注释的/login_check要对应正确的回调处理路由。 - 用户匹配逻辑:
front_users提供者基于email字段查找用户,需确认OIDC返回的用户信息中包含匹配该字段的内容,或者配置自定义的用户加载器来适配OIDC响应数据。 - 版本兼容性:检查drenso/symfony-oidc-bundle版本与当前Symfony版本是否兼容,尤其是认证管理器(
enable_authenticator_manager: true)的适配情况。 - 补充错误详情:若以上方向未解决问题,需提供截图中的具体错误文本,比如路由不存在、客户端配置无效或用户加载失败等信息。
内容的提问来源于stack exchange,提问作者DevJny
相关产品推荐
相关产品推荐

