Auth0:从规则重定向,如何保护状态?

标签 auth0 multi-factor-authentication

遵循 Auth0 Redirect Users from rules 的这篇文章,我们的应用程序中有以下场景:

  • 用户尝试登录
  • 对于某些特定条件,它们可能被重定向到询问挑战问题的端点
  • 如果回答正确,身份验证机制将恢复使用提到的 URL:

    domain/continue?state=STATE_GENERATED
    

我们构建了一个示例应用程序,可以很好地解决一个问题。 Auth0生成的‘状态’可以被用户看到;无论是在重定向中还是在浏览器的网络选项卡中。

因此我们尝试了以下方法:

登录 -> 重定向到挑战问题(状态附加到网址) -> 我们没有继续,但复制了状态并在浏览器中启动了简历网址:

https://DOMAIN.auth0.com/continue?state=THE_ORIGINAL_STATE

在同一个浏览器中,它使用 token 重定向到我们的应用程序。用户可以缓解此类挑战问题。

在使用规则和从规则重定向来完成多因素身份验证的类似流程中,保护“状态”的最佳实践/推荐方法是什么?

最佳答案

状态用于防止身份验证中的 CSFR,您不能使用它来确保用户已在您的“挑战问题”页面上完成某些操作。您应该简单地传递状态。

您需要做的是使用共享 key 生成一个 token ,该 token 可以从质询问题页面传递到规则,以便对其进行验证。基本上,您可以做的是,在用户正确回答问题后,您可以使用质询页面服务器和规则都知道的 secret 生成 JWT token 。 JWT token 可以是任何内容,例如它可以包含类似 {challenge_success: true } 的内容。

生成 token 后,您将重定向回:

https://DOMAIN.auth0.com/continue?state=THE_ORIGINAL_STATE&token=GENERATED_JWT

然后在规则中您读取并验证 token 并检查声明是否符合您的预期。

您可以在此处查看其工作原理的完整示例:https://auth0.com/docs/rules/current/redirect#how-to-securely-process-results

关于Auth0:从规则重定向,如何保护状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46083896/

相关文章:

auth0 - TypeError,在开发环境中为 'digest'(未定义)

auth0 - 在两个企业之间集成单一登录

api - Auth0调用userinfo的正确方法

python - 在 Amazon Cognito MFA 中恢复

azure - 混合 Azure AD 加入域的多重身份验证

authentication - 带有 OATH token 的 Azure MFA

testing - 如何在 e2e 测试中跳过 MFA?

node.js - Auth0 和 Dialogflow 身份验证

authentication - KeyCloak 应该用作我的用户的身份验证服务器吗?

azure-active-directory - DUO 是否与 Microsoft Azure Active Directory B2C 集成?