我有一个使用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
答案 0 :(得分:0)
我的问题出在SignIn方法中,即在这一行:
return new RedirectResult(signinMessage.WriteQueryString());
需要改为这个:
return new RedirectResult(signInRequest.RequestUrl.ToString());
请参阅我的博客文章,其中包含完整的代码示例: