Windows Azure Active Directory应用程序安装程序

时间:2014-05-12 22:28:12

标签: azure-active-directory

我创建了带有几个回复网址的WAAD应用程序,例如

https://localhost:4444/Search

https://server/Search

https://stage.company.com/Search

https://production.company.com/Search

我正在使用WSFederationAuthencationModule.CreateSignInRequest方法并根据代码的执行位置传递回复URL

    public ActionResult Federated()
    {
        var module = FederatedAuthentication.WSFederationAuthenticationModule;
        var scheme = Request.Url.Scheme;
        var replyUrl = Url.Action("Index", "Search", null, scheme);
        var requestMessage = module.CreateSignInRequest(Guid.NewGuid().ToString(), replyUrl, true);
        return new RedirectResult(requestMessage.RequestUrl);
    }

似乎代码总是重定向到我在UI中修改的最后一个回复URL。当您修改回复网址时,它似乎首先放在清单中,只是使用了回复网址。

我的理解回复网址有缺陷吗?

2 个答案:

答案 0 :(得分:1)

我在我的项目中使用了您的代码,但无法重现该问题。您正在使用的方法生成一个WSFed SSO请求,该请求包含在wctx参数中编码的replyUrl(通过URL解码器传递您的代码生成的下面的SSO请求,您将看到编码的ru)。

https://login.windows.net/dushyantgill.com/wsfed?wa=wsignin1.0&wtrealm=https%3a%2f%2fdushyantgill.com%2fWSFedTest&wctx=rm%3d1%26id%3d01b22db4-bfdc-4efd-abb5-2909cf445a51%26ru%3dhttps%253a%252f%252flocalhost%253a44311%252fHome%252fAbout&wct=2014-05-14T05%3a37%3a01Z

处理响应后,身份验证模块的OnAuthenticateRequest处理程序从wctx中提取replyUrl并重定向用户的代理。见http://msdn.microsoft.com/en-us/library/system.identitymodel.services.wsfederationauthenticationmodule.onauthenticaterequest(v=vs.110).aspx

您是否可以确认管道中还有SessionAuthenticationModule。 最后,您始终可以使用显式的WReply参数构建您的所有者WSFed SSO请求,该参数包含您在AAD中使用应用程序配置的其中一个回复URL。

希望这有帮助。

答案 1 :(得分:0)

对我来说有用的是在配置文件中将passiveRedirectEnabled设置为true。然后,FederatedAuthentication.WSFederationAuthenticationModule.CreateSignInRequest调用中的returnUrl参数有效!

  <wsFederation passiveRedirectEnabled="true" ....>