php - Azure Active Directory B2C - 用于登录/注册和密码重置的用户流(策略)

标签 php azure jwt azure-active-directory azure-ad-b2c

我想通过 Azure Active Directory (AD) B2C 在我的网站内置 PHP 中集成多重身份验证 (MFA),仅用于身份验证目的,

我检查了它的文档和一些代码示例,我从这里提到的教程中创建了以下内容 https://learn.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant

  • Azure AD B2C 租户
  • 注册网络应用程序(回复 URL 为 https://jwt.ms)
  • 创建注册和登录用户流程/密码重置用户流程

我通过 Azure 门户提供的 URL 测试了注册/登录用户流程和密码重置用户流程,标题为 运行用户流程端点 ►,其工作按预期完美,并且在成功响应我得到了一个 JWT token ,其中包含如下信息:

但我不确定我的计划是否按照标准正确,

我的计划是这样的 - 我将在用户个人资料部分提供一个选项来启用/禁用 MFA,因此,如果用户启用 MFA,则在下次登录时,成功验证后(通过电子邮件和密码存储在数据库中),用户将被重定向到 MFA 页面, 在 MFA 页面上有 2 个按钮,注册/登录和忘记密码,

  • 注册/登录 - 此按钮包含由 Azure AD B2C 中的“注册并登录”用户流程创建的链接 - 用户流程(策略),

  • 忘记密码 - 此按钮具有由 Azure AD B2C 中的“密码重置”用户流创建的链接 - 用户流(策略), - 我需要添加此链接,因为注册/登录中的忘记密码链接未按预期工作,它将重定向到回复网址,并带有一些信息和消息,例如AADB2C90118:用户忘记了密码

在两个用户流程中我都启用了 MFA, 因此,在成功进行 MFA 后,我会将用户重定向到我网站中的仪表板, 否则用户将保留在 MFA 页面上,

  1. 我解释了我的计划,请建议我,如果我在注册/登录或忘记密码流程中做错了什么?或者如果我能做得更好,

  2. 为了在 PHP 中解码 JWT token ,我在 . 上破坏它并使用 base64_decode() 提取数据,手动解码是否合适?另请告诉我如何验证它?

任何帮助或建议都会对我有帮助,

提前致谢,

最佳答案

1。我解释了我的计划,请建议我,如果我在做某事 注册/登录或忘记密码流程错误?或者如果我可以做 更好

看来您的做法是正确的,但如果您愿意,可以在密码上添加一些自定义规则,以使其更加安全可靠。 B2C provides那里有很多规则。您可以找到所有Password enforcement rule 在这里。

2。为了在 PHP 中解码 JWT token ,我在 .并使用 base64_decode() 提取数据,手动解码好不好? 另请告诉我如何验证它?

使用 base64 破解 JWT token 是可以的。您可以手动检查它,但最好在程序中处理它。关于 token 验证,可能已经解决了一些线程,因此我指的是您可以轻松实现的线程。检查这里你会怎么样 validate Jwt token另请检查this

Note For manual decode you could validate https://jwt.io/ here you can get many algorithm together.

你可以尝试

查看您的案例后,我还建议您查看 B2C self-service password reset option据我所知,这在开发人员中也很受欢迎。您可以尝试一下,结果它将减少您的许多开销,让您无需花费更多麻烦即可处理该场景。

Note : Please have look on referred document for token validation you would get some good idea how you can validate your token

关于php - Azure Active Directory B2C - 用于登录/注册和密码重置的用户流(策略),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55626201/

相关文章:

php - Mysql PHP插入查询无法正常工作

php - 反对公共(public)使用服务

azure - Terraform - 将 for_each 与元组内的字符串列表一起使用

ajax - 当我使用 POSTMAN 在 golang api 上执行 POST 请求时,我成功地收到了 jwt token 作为 cookie,但是当我从浏览器执行此操作时,我没有收到任何 cookie

amazon-web-services - AWS API Gateway 身份验证错误 IncompleteSignatureException 使用带有 Auth0 的 JWT

java - 使用签名的 jwt token 连接开发者 Apple Store 连接

php - 如何在 Mysql 中使用 like 运算符搜索法语单词?

azure - 如何在管道执行之间将运行时数据存储在 Azure 数据工厂中?

python - 阻止QFileDialog中的文件操作,例如复制、查看、删除等

PHPWord 将 HTML 读入表格单元格