【问题标题】:okta - asp.net web forms - how do I prevent an unauthorized user from navigating to a secure web page?okta - asp.net Web 表单 - 如何防止未经授权的用户导航到安全网页?
【发布时间】:2019-08-15 21:00:06
【问题描述】:

我正在尝试将 okta 添加到一个非常旧的 ASP.Net Web 表单应用程序中。

我正在关注这个演示:https://developer.okta.com/blog/2018/08/29/secure-webforms-with-openidconnect-okta

我将这些更改集成到我的解决方案中。

但是,现在我想保护特定网页。我不希望任何人能够导航到特定页面,除非他们经过身份验证。如果他们确实尝试导航到安全页面,我希望将他们发送到 okta 进行登录。

我添加了以下代码,与上面演示中的代码类似。它似乎有效。

    if (!HttpContext.Current.Request.IsAuthenticated)
    {
        HttpContext.Current.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties { RedirectUri = "/" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);

        return;
    }

但是,我不想将此代码添加到每个页面。

过去当我在 ASP.NET MVC 应用程序中集成 okta 时,我会将 [Authenticate] 属性添加到控制器。那会给我想要的效果。

关于如何为 ASP.Net Web 表单应用程序获得所需结果的任何建议?

一个不太理想的选项是将代码放在我的母版页中。问题是我有几个母版页,所以我必须复制代码。

我知道 Web 表单可以使用表单身份验证。然后使用以下配置强制用户进入登录页面。

<authentication mode="Forms">
      <forms loginUrl="~/Login.aspx" />
    </authentication>

但是,我没有使用表单身份验证。我正在使用okta。

最后,我在考虑使用自定义的 HttpModule / Handler。但是,当我尝试这样做时,自定义模块在 Startup.cs 之前运行。 Startup.cs 包含初始化 okta 和 owin 上下文的代码。结果,当自定义模块运行时,GetOwinContext 失败。

任何建议将不胜感激。

【问题讨论】:

  • 我之前所做的是创建多个 MasterPage:一个用于基本布局,一个用于经过身份验证的页面,还可能一个用于匿名用户,具体取决于您的需要。然后在授权页面的 MasterPage 中,将该代码块添加到 Page_Load() 方法中。
  • @derekmckinnon 在与我公司的一位具有 okta 和 Web 表单经验的开发人员讨论了这个问题后,我们基本上决定做同样的事情。感谢您确认此决定。

标签: c# asp.net webforms okta


【解决方案1】:

@derekmckinnon 在与我公司的一位具有 okta 和 Web 表单经验的开发人员讨论了这个问题后,我们基本上决定做同样的事情。感谢您确认此决定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多