具有多个回复网址的Azure AD重定向到错误的一个

时间:2015-05-22 16:30:47

标签: azure-active-directory ws-federation

我有一个使用AAD和WS Federation的应用程序。我的AAD中的应用程序中配置了多个回复URL。我的应用程序之前强制所有用户都登录,并且重定向在所有环境中都能正常工作。我必须启用未经身份验证的用户访问我的网站,在我完成所需的更改后,应用程序在登录后开始将我重定向到随机的回复URL。

以下是代码更改:

的Web.config

<system.web>
    <authorization>
      <allow users="*" />
    </authorization>
    ...
</system.web>

AccountController.cs

public ActionResult SignIn()
{
    WsFederationConfiguration config = FederatedAuthentication.FederationConfiguration.WsFederationConfiguration;

    string callbackUrl = Url.Action("Index", "Home", routeValues: null, protocol: Request.Url.Scheme);
    SignInRequestMessage signinMessage = new SignInRequestMessage(new Uri(config.Issuer), callbackUrl);
    signinMessage.SetParameter("wtrealm", IdentityConfig.Realm ?? config.Realm);

    return new RedirectResult(signinMessage.WriteQueryString());
}

我还在两个地方的Web.config转换中指定了回复URL:

在appSettings <add key="ida:RedirectURI" value="..." />中,我在WSFederationAuthenticationModule_RedirectingToIdentityProvider方法的Global.asax.cs中使用e.SignInRequestMessage.Reply来设置<system.identityModel.services> <federationConfiguration> <wsFederation passiveRedirectEnabled="true" reply="..." /> </federationConfiguration> </system.identityModel.services>

并在

MediaExtractor

请注意,有一个相关的SO问题没有详细说明且无法回答Azure Active Directory Reply URL not working as expected

1 个答案:

答案 0 :(得分:0)

我的问题出在SignIn方法中,即在这一行:

return new RedirectResult(signinMessage.WriteQueryString());

需要改为这个:

return new RedirectResult(signInRequest.RequestUrl.ToString());

请参阅我的博客文章,其中包含完整的代码示例:

Partial authentication in Azure AD using WS Federation