在OWIN RedirectToIdentityProvider通知中更改ReturnUrl

时间:2015-07-09 21:16:38

标签: security authentication owin katana ws-federation

我们目前正在覆盖产品中的WSFederationAuthenticationModule.RedirectToIdentityProvider,以更改用户代理在身份验证后重定向到的returnUrl。

现在我们正在采用OWIN(Katana)中间件代替HttpModules。在WsFederationAuthenticationOptions中的RedirectToIdentityProvider通知中,我看到WCtx参数现在包含使用DPAPI加密的WsFedOwinState参数。

如何实施RedirectToIdentityProvider操作来更改返回网址?我是否需要解密WsFedOwinState参数以添加returnUrl查询参数,还是有其他方法?

2 个答案:

答案 0 :(得分:3)

在RedirectToIdentityProvider中,您将可以访问WsFederationMessage。

将Wreply属性设置为您需要的值。

注意:默认情况下使用MachineKey,而不是使用DPAPI来保护wctx。

答案 1 :(得分:0)

就我而言,我更改了SecurityTokenValidated中的返回网址,并且ADFS的重定向始终转到相同的网址

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

    app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = WsFederationAuthenticationDefaults.AuthenticationType });

    app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
    {
        Wtrealm = realm,
        MetadataAddress = adfsMetadata,
        Notifications = new WsFederationAuthenticationNotifications
        {
            SecurityTokenValidated = nx =>
            {
                nx.AuthenticationTicket.Properties.RedirectUri = "/RedirectionGoesHere.aspx";
                return Task.FromResult(0);
            }
        }
    });
    // This makes any middleware defined above this line run before the Authorization rule is applied in web.config
    app.UseStageMarker(PipelineStage.Authenticate);
}