在IdentityServer4中,如何安全地存储ReturnUrl?

时间:2019-04-07 20:59:17

标签: asp.net-core identityserver4

我正在开发一个身份服务器4 dotnet核心应用程序,所以这和dots问题和IDS4问题一样多。我需要在页面之间保持状态的一个示例(登录,注册等)是returnUrl。我要从中迁移的应用程序曾经将其存储在会话变量中,但是据我了解,除非我运行持久性会话策略,否则无法很好地扩展。

因此,目前,我将其作为每个视图使用的每个视图模型中的一个字段传递,以便可以将其返回。这是一个合理的方法吗?我还需要传递其他字段,所以我想知道这是否是一种安全且合乎逻辑的方法。

1 个答案:

答案 0 :(得分:1)

  

因此,目前,我将其作为每个视图使用的每个视图模型中的一个字段传递,以便可以将其返回。这是一个好方法吗?

是的,您如何选择将其传递给您,我选择了相同的方法。您可以使用TempData,Sessions甚至localStorage作为替代方案。我认为在模型(视图模型)中使用它是一种好方法,因为您明确指定了返回URL的存在位置,否则它可能会在不需要的上下文中持续存在。

现在是安全性问题,因为显然您可能可以在浏览器地址字段中看到返回网址。

作为Identity Server 4安装程序的一部分,您可以指定允许重定向到的返回URL,因此我认为让用户看到重定向URL不会有任何危害。

要考虑的事情是,如果用户在身份验证过程的中间与其他人共享url,他们是否能够从初始用户已停止的那部分过程中恢复?这是您想要在应用程序中使用的东西吗?

如果您是可靠而不是安全的意思,请编写测试以确保您的代码有效。