Symfony 6.3 OidcTokenHandler默认OidcUser配置问题求助
解决Symfony OpenID Connect默认OidcUser的用户提供者配置问题
问题原因
尽管文档说明OidcTokenHandler会自动利用声明创建OidcUser,但Symfony的防火墙仍需明确指定对应的用户提供者服务,否则会抛出'main' firewall requires a user provider but none was defined错误。
解决方案
你只需在security.yaml中注册Symfony内置的OidcUserProvider服务,并在main防火墙中指定它即可,无需自定义用户提供者:
修改后的security.yaml配置:
security: # 注册内置的Oidc用户提供者 user_providers: oidc_user_provider: id: Symfony\Component\Security\Http\AccessToken\Oidc\OidcUserProvider firewalls: main: # 指定使用上述注册的Oidc用户提供者 user_provider: oidc_user_provider access_token: token_handler: oidc_user_info: https://keycloack.doamin.xxx/realms/Api/protocol/openid-connect/userinfo access_control: - { path: ^/admin, roles: ROLE_ADMIN } - { path: ^/, roles: ROLE_USER }
说明
这个内置的OidcUserProvider专门配合OidcTokenHandler工作,会直接使用从UserInfo端点获取的声明来构建OidcUser,完全符合你不想自定义UserProvider的需求。
内容的提问来源于stack exchange,提问作者GrenierJ
相关产品推荐
相关产品推荐

