Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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# 使用Windows身份基础重定向到自定义登录页面 我在MVC3网站上使用Azure的AppBuffic访问控制服务使用Windows身份基础。我想弄清楚的是,如果我在控制器或操作上有authorized属性,如何控制WIF重定向用户的位置。(这是我第一次与WIF合作,似乎没有太多好的信息可用。)_C#_Asp.net Mvc 3_Authentication_Appfabric_Wif - Fatal编程技术网

C# 使用Windows身份基础重定向到自定义登录页面 我在MVC3网站上使用Azure的AppBuffic访问控制服务使用Windows身份基础。我想弄清楚的是,如果我在控制器或操作上有authorized属性,如何控制WIF重定向用户的位置。(这是我第一次与WIF合作,似乎没有太多好的信息可用。)

C# 使用Windows身份基础重定向到自定义登录页面 我在MVC3网站上使用Azure的AppBuffic访问控制服务使用Windows身份基础。我想弄清楚的是,如果我在控制器或操作上有authorized属性,如何控制WIF重定向用户的位置。(这是我第一次与WIF合作,似乎没有太多好的信息可用。),c#,asp.net-mvc-3,authentication,appfabric,wif,C#,Asp.net Mvc 3,Authentication,Appfabric,Wif,我已禁用自动转发,因为它一直将我发送到默认的ACS身份验证页面。我想让用户在我的网站上使用我的自定义登录页面,但我似乎不知道需要什么设置才能做到这一点 有没有一种方法,以WIF为本机,告诉它重定向到我的登录页面,或者我将不得不编写自己的AuthorizeAttribute来为我做到这一点 谢谢 编辑: 由于最近在这方面有一些活动,我想我会写下我的一些发现。不幸的是,我不是100%导致一切正常工作(这么多移动部件),但我最终让WIF重定向到我的登录页面 我这样做时没有向程序中添加任何代码,而是稍微

我已禁用自动转发,因为它一直将我发送到默认的ACS身份验证页面。我想让用户在我的网站上使用我的自定义登录页面,但我似乎不知道需要什么设置才能做到这一点

有没有一种方法,以WIF为本机,告诉它重定向到我的登录页面,或者我将不得不编写自己的AuthorizeAttribute来为我做到这一点

谢谢

编辑:

由于最近在这方面有一些活动,我想我会写下我的一些发现。不幸的是,我不是100%导致一切正常工作(这么多移动部件),但我最终让WIF重定向到我的登录页面

我这样做时没有向程序中添加任何代码,而是稍微偏离了我发现的示例。我发现保留web.config的表单身份验证部分可以让一切正常工作。在我的web.config中,我有一个普通表单验证条目:

<system.web>
    <httpRuntime requestValidationMode="2.0" />
    <authentication mode="Forms" >
        <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    ...
</system.web>

...

免责声明:我不知道这是否是WIF的正确方式——它正好解决了我的问题。我可以在控制器或操作上使用常规的[Authorize]属性,并将正确的重定向到登录页面,就像使用表单身份验证一样。

我对一个示例做了更多的介绍,根据重定向之前需要做什么,这可能会有帮助,也可能不会有帮助

在global.asax中,我向“RedirectingToIdentityProvider”事件添加了一个处理程序,并对其进行了自定义,以添加whr参数。为此,您需要首先向ConfigurationCreated事件添加一个处理程序:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    RegisterRoutes(RouteTable.Routes);

    FederatedAuthentication.ServiceConfigurationCreated += new EventHandler<Microsoft.IdentityModel.Web.Configuration.ServiceConfigurationCreatedEventArgs>(FederatedAuthentication_ServiceConfigurationCreated);   
}

    void FederatedAuthentication_ServiceConfigurationCreated(object sender, Microsoft.IdentityModel.Web.Configuration.ServiceConfigurationCreatedEventArgs e)
    {
        var m = FederatedAuthentication.WSFederationAuthenticationModule;
        m.RedirectingToIdentityProvider += new EventHandler<RedirectingToIdentityProviderEventArgs>(m_RedirectingToIdentityProvider);
    }

    void m_RedirectingToIdentityProvider(object sender, RedirectingToIdentityProviderEventArgs e)
    {
        var sim = e.SignInRequestMessage;
        sim.HomeRealm = "Google";
    }
受保护的无效应用程序\u Start()
{
RegisterAllAreas();
注册地址(RouteTable.Routes);
FederatedAuthentication.ServiceConfigurationCreated+=新事件处理程序(FederatedAuthentication\u ServiceConfigurationCreated);
}
void FederatedAuthentication\u ServiceConfigurationCreated(对象发送方,Microsoft.IdentityModel.Web.Configuration.ServiceConfigurationCreatedEventArgs e)
{
var m=FederatedAuthentication.WSFederationAuthenticationModule;
m、 RedirectingToIdentityProvider+=新事件处理程序(m_RedirectingToIdentityProvider);
}
无效m_RedirectingToIdentityProvider(对象发送方,RedirectingToIdentityProviderEventArgs e)
{
var sim=e.SignInRequestMessage;
sim.HomeRealm=“谷歌”;
}
这适用于标准的“授权”属性

如果这个扩展点还不够,那么您可以编写自己的属性来完全控制流程

看看样本3或样本7。不是MVC3,而是MVC2,非常接近您正在做的事情

此处描述了该过程:


我相信您想做的事情可以在以下示例中找到:

另外,请检查此页面上有关被动DirectEnabled属性的联合身份验证配置部分:

无源DirectEnabled-布尔-默认为false 控制模块是否启用自动重定向 对STS的未经授权的请求


谢谢你的回复。我已经阅读了那篇MSDN文章,但我将看一看ClaimsID项目。我真的很惊讶没有更多关于这个话题的信息!你的CodePlex.com链接中缺少一个“l”。可能是因为WIF在MVC之后。修复了链接。谢谢别担心。看来我得自己动手了(没什么大不了的,只是还有更多的事要做)。看起来他们本可以对这件事进行一些控制,或者让事情变得更加明显。我会继续四处看看,但这似乎是我能得到的最好答案。谢谢啊,那么你是队员了?我误解了你的第一句话。现在这更有意义了。我认为这篇文章会很有帮助: