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( 检查$credentials['username']是否存在于okta中。如果是,从okta加载用户并返回用户

public function checkCredentials($credentials, UserInterface $user)

A( 检查用户是否是db用户实体的实例。如果是,验证密码并返回用户

B( 检查用户是否是okta用户的实例。如果是,根据okta进行验证,并返回okta用户

相关内容

最新更新