Auth0:从规则重定向,如何保护状态?
Auth0: Redirect from rules, how to protect state?
根据 Auth0 Redirect Users from rules 的这篇文章,我们的应用程序中有以下场景:
- 用户尝试登录
- 对于某些特定标准,它们 可能 被重定向到要求挑战问题的端点
如果回答正确,身份验证机制将恢复使用提到的 url:
domain/continue?state=STATE_GENERATED
我们构建了一个示例应用程序,可以很好地解决一个问题。生成的Auth0 'state' 用户可以看到;无论是在重定向还是在浏览器的网络选项卡中。
所以我们尝试了以下方法:
登录 -> 重定向到挑战问题(状态附加到 url) -> 我们没有继续但复制了状态并在浏览器中启动了简历 url:
https://DOMAIN.auth0.com/continue?state=THE_ORIGINAL_STATE
在同一个浏览器中,它使用令牌重定向到我们的应用程序。用户可以减轻这样的挑战性问题。
在使用规则并从规则重定向完成多因素身份验证的类似流程中,保护 'state' 的最佳practice/recommended 方法是什么?
state
用于在身份验证中防止 CSFR,您不能使用它来确保用户已在您的 "challenge question" 页面上完成某些操作。你应该简单地传递状态。
您需要做的是使用共享密钥生成一个令牌,该令牌可以从挑战问题页面传递到规则,以便对其进行验证。基本上,您可以做的是在用户正确回答问题后,使用挑战页面服务器和规则都知道的秘密生成 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
根据 Auth0 Redirect Users from rules 的这篇文章,我们的应用程序中有以下场景:
- 用户尝试登录
- 对于某些特定标准,它们 可能 被重定向到要求挑战问题的端点
如果回答正确,身份验证机制将恢复使用提到的 url:
domain/continue?state=STATE_GENERATED
我们构建了一个示例应用程序,可以很好地解决一个问题。生成的Auth0 'state' 用户可以看到;无论是在重定向还是在浏览器的网络选项卡中。
所以我们尝试了以下方法:
登录 -> 重定向到挑战问题(状态附加到 url) -> 我们没有继续但复制了状态并在浏览器中启动了简历 url:
https://DOMAIN.auth0.com/continue?state=THE_ORIGINAL_STATE
在同一个浏览器中,它使用令牌重定向到我们的应用程序。用户可以减轻这样的挑战性问题。
在使用规则并从规则重定向完成多因素身份验证的类似流程中,保护 'state' 的最佳practice/recommended 方法是什么?
state
用于在身份验证中防止 CSFR,您不能使用它来确保用户已在您的 "challenge question" 页面上完成某些操作。你应该简单地传递状态。
您需要做的是使用共享密钥生成一个令牌,该令牌可以从挑战问题页面传递到规则,以便对其进行验证。基本上,您可以做的是在用户正确回答问题后,使用挑战页面服务器和规则都知道的秘密生成 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