按照Auth0 Redirect Users from rules中的这篇文章,我们的应用程序中包含以下场景:
如果回答得当,身份验证机制将使用上述网址继续:
domain/continue?state=STATE_GENERATED
我们制作了一个示例应用,适用于一个问题。 Auth0生成的状态'用户可以看到;无论是在重定向还是在浏览器的网络标签中。
所以我们尝试了以下内容:
登录 - >重定向挑战问题(附加到网址的状态) - >我们没有继续但是复制了状态并在浏览器中启动了简历网址:
https://DOMAIN.auth0.com/continue?state=THE_ORIGINAL_STATE
在同一个浏览器中,它使用令牌重定向到我们的应用程序。用户可以缓解这样的质疑问题。
保护“状态”的最佳做法/推荐方法是什么?在使用规则并从规则重定向进行多因素身份验证的类似流程中?
答案 0 :(得分:2)
state
用于防止身份验证中的CSFR,而不是可以用来确保用户在您的挑战问题上对某些操作进行竞争的问题。页。你应该简单地通过国家。
您需要做的是使用共享密钥生成可以从质询问题页面传递到规则的令牌,以便对其进行验证。基本上你可以做的是在用户正确回答问题之后,你使用挑战页面服务器和规则都知道的秘密生成一个JWT令牌。 JWT令牌可以是任何内容,例如它可以包含{ challenge_success: true }
之类的内容。
生成令牌后,您将重定向回:
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