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

问题描述 投票:0回答:2

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

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

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

我通过Azure门户提供的URL测试了注册/登录用户流和密码重置用户流,标题为Run user flow end point ►,并且其工作正常如预期,并且在成功响应后,我获得了一个JWT令牌,其中包含以下信息:

但我不确定我的计划是否符合标准,

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

  • 注册/登录 - 此按钮具有由Azure AD B2C的“注册和登录”用户流创建的链接 - 用户流(策略),
  • 忘记密码 - 此按钮具有由Azure AD B2C的“密码重置”用户流创建的链接 - 用户流(策略), - 我需要添加此项,因为,注册/登录中的忘记密码链接不按预期工作,它将重定向到回复网址,其中包含一些信息和类似AADB2C90118: The user has forgotten their password的消息

在这两个用户流程中,我启用了MFA,因此,在成功的MFA上,我会将用户重定向到我的网站中的信息中心,否则用户将保留在MFA页面上,

  1. 我解释了我的计划,请告诉我,如果我在注册/登录或忘记密码流程中做错了什么?或者,如果我能做得更好,
  2. 为了解码PHP中的JWT令牌,我在.上打破它并使用base64_decode()来提取数据,手动解码它是否合适?另外,请告诉我如何验证它?

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

提前致谢,

php azure jwt azure-active-directory azure-ad-b2c
2个回答
1
投票

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

似乎你是在正确的方式,但如果你想,你可以在你的密码上添加一些自定义规则,使其更安全可靠。 B2C provides有很多规则。你可以在这里找到所有的Password enforcement rule

2.为了解码PHP中的JWT令牌,我正在打破它。并使用base64_decode()来提取数据,手动解码是否合适?另外,请告诉我如何验证它?

使用base64打破JWT令牌是没有问题的。你可以手动检查它,但它的好习惯是在程序中处理它。有关令牌验证的问题已经解决,所以我指的是你可以轻松实现的那些。在这里查看你如何validate Jwt token也检查this

注意对于手动解码,您可以在此处验证https://jwt.io/,您可以一起获得许多算法。

你可以试试

看看你的情况后,我还建议你看一下B2C self-service password reset option,它至今我也知道在开发者中也很受欢迎。你可以尝试一下它会减少你的许多开销,让你处理这个场景而不会更麻烦。

注意:请查看token validation的推荐文档,您将了解如何验证令牌


1
投票

密码重置流的工作方式有点不同。如果用户单击重置密码链接,AADB2C将使用特定错误代码(AADB2C90118)重定向到依赖方服务(主服务)。然后,依赖方服务应调用重置密码策略流。

The code sample link to catch the error and then redirect to reset password handler

对于解码JWT令牌,应该有现有的库,建议使用它们。

© www.soinside.com 2019 - 2024. All rights reserved.