Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将ADFS SSO集成到现有的.net web应用程序中_C#_.net_Active Directory_Saml 2.0_Adfs - Fatal编程技术网

C# 将ADFS SSO集成到现有的.net web应用程序中

C# 将ADFS SSO集成到现有的.net web应用程序中,c#,.net,active-directory,saml-2.0,adfs,C#,.net,Active Directory,Saml 2.0,Adfs,我已正确设置了active directory,可以使用如下URL进入IDP登录页面: https://SERVER/adfs/ls/idpinitiatedsignon.htm 我创建了一个新项目,可以通过该应用程序进行简单的登录 现在我正试图将其实现到当前的web应用程序代码中 在这个简单的项目中,运行下面的代码后,它会重定向到IDP登录页面 public class Startup { public void Configuration(IAppBuilder app) {

我已正确设置了active directory,可以使用如下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页面。我错过什么了吗?如果用户还没有登录,我希望他们登录,但我不明白为什么应用程序没有重定向到登录。任何帮助都将不胜感激。

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

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

你在启动类中调用“ConfigureAuth”吗?@nzpcmad是的,我将更新以上内容以包括整个启动类。这不是因为已经有cookie了吗?您尝试过清除Cookie吗?@nzpcmad在运行启动配置代码之前,我尝试过删除所有Cookie,但事实并非如此,尽管这是一个很好的答案,值得尝试。再摆弄几下,我找到了答案。我会把答案贴在下面。