问题描述
我正在开发一个带有两步验证的 Symfony API 应用程序。第一步是带有用户名和密码的 json_login
表单,第二步是带有 SMS 服务的 OTP。
json_login 成功后,json_login 验证器必须创建 JWT。因为,我使用令牌而不是 PHP 会话。它通过 stateless: true
选项在 security.yaml 文件中配置。
# security.yaml
stateless: true
json_login:
check_path: app_login
username_path: email
password_path: password
使用 Symfony 框架可以制作许多不同的身份验证器和防火墙。 在第一步(json_login)中,用户通过身份验证并被授权访问整个系统。但是,在 OTP 步骤之后,用户必须有权访问整个系统。我可以使用哪种方法进行双因素身份验证?
解决方法
以下是过去对我有帮助的一些提示:
- Google Authenticator :https://github.com/sonata-project/GoogleAuthenticator(这是 Google 提供的原始代码的实现,但专用于 PHP)
- 2fa : https://github.com/scheb/2fa,
- 请注意,https://github.com/scheb/two-factor-bundle 已过时,相反,对于最近的 symfony 版本,建议使用 https://github.com/scheb/2fa
- 2fa 是作者在这里解释的:https://www.christianscheb.de/archives/14
- SMS|Email 验证,你可以使用 Authy bundle for Symfony with twilio,但推荐的方式是使用 Verify API (https://www.twilio.com/docs/verify/api)
在这些bricks实现之后,你需要添加你的API的业务逻辑