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

时间:2019-04-11 06:42:45

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

我仅想通过身份验证通过我的网站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门户提供的标题为Run user flow end point ►的URL测试了注册/登录用户流和密码重置用户流,并按预期进行了正常工作,并在成功响应后得到了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()来提取数据,手动解码是否好?还请让我知道如何验证它?

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

预先感谢

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分: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的参考文档,您将对如何验证自己的位置有所了解   令牌

相关问题