如何解决symony 3.3与多个提供者的防护认证
我正在实现一个symfony(3.3)自定义保护身份验证器,以针对OKTA对用户进行身份验证,并且工作正常,没有任何问题。
基本上,如果有任何用户访问/ api / login终结点,则应根据OKTA进行身份验证,但一个管理员用户必须针对数据库中存储的密码进行身份验证。我该如何实现?
这是我的安全性。yml
安全性:
providers:
db_user_provider:
entity:
class: MyApiBundle:ApiUser
property: username
okta_user_provider:
id: okta_user_provider
my_chain_provider:
chain:
providers:
- db_user_provider
- okta_user_provider
firewalls:
login:
pattern: ^/api/login
anonymous: true
stateless: true
provider: my_chain_provider
guard:
authenticators:
- authenticator_guard_okta
非常感谢
解决方法
我在自定义的LoginFormAuthenticator中解决了此问题
即
public function getUser($credentials,UserProviderInterface $userProvider)
A)检查$ credentials ['username']是否存在于数据库中。如果是,请从数据库中找到用户实体并返回用户
B)检查okta中是否存在$ credentials ['username']。如果是,请从okta加载用户并返回用户
public function checkCredentials($credentials,UserInterface $user)
A)检查用户是否是db用户实体的实例。如果是,请验证密码并返回用户
B)检查用户是否是okta用户的实例。如果是,请针对okta进行验证并返回okta用户
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。