【问题标题】:Integrating ADFS SSO into existing .net web application将 ADFS SSO 集成到现有的 .net Web 应用程序中
【发布时间】:2020-03-31 21:04:42
【问题描述】:

我的活动目录设置正确,我可以使用如下所示的 URL 转到 IDP 登录页面:

https://SERVER/adfs/ls/idpinitiatedsignon.htm

我创建了一个新项目,并且能够通过该应用进行简单的登录。

现在我正在尝试将其实现到当前的 Web 应用程序代码中。

在简单项目中,以下代码运行后,重定向到IDP登录页面。

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
    }
    private static string realm = ConfigurationManager.AppSettings["ida:Wtrealm"];
    private static string adfsMetadata = ConfigurationManager.AppSettings["ida:ADFSMetadata"];

    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseWsFederationAuthentication(
            new WsFederationAuthenticationOptions
            {
                Wtrealm = realm,
                MetadataAddress = adfsMetadata
            });
    }
}

当此代码在现有项目中运行时,它从不重定向,而是继续加载 Default.aspx 页面。我错过了什么吗?如果用户尚未登录,我希望用户登录,但我不知道为什么应用程序没有重定向到登录。任何帮助将不胜感激。

【问题讨论】:

  • 你是在 Startup 类中调用“ConfigureAuth”吗?
  • @nzpcmad 是的,我会更新上面的以包含整个启动类。
  • 不是已经有cookie了吗?您是否尝试过清除 cookie?
  • @nzpcmad 我尝试在运行启动配置代码之前删除所有 cookie,但事实并非如此,尽管这是一个很好的答案并且值得尝试。在摆弄它之后,我找到了我的答案。我将在下面发布答案。

标签: c# .net active-directory saml-2.0 adfs


【解决方案1】:

经过几天的尝试,我找到了解决方案。我将此代码添加到 Default.aspx page_load 方法的顶部,以便在未登录时运行它:

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

【讨论】:

    猜你喜欢
    • 2018-04-04
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    相关资源
    最近更新 更多