如何将用户重定向到ACS默认登录页面

时间:2013-01-25 13:26:18

标签: c# azure acs

我在我的网络应用程序中使用azure Access Control System (ACS)来验证来自不同身份提供商的用户。我成功注册了我的应用程序以使用ACS。现在我通过从web.config文件中删除以下内容来删除我对ACS的完整网站安全性:

<authorization>
  <deny users="?" />
</authorization>

删除后,我的用户无需登录即可访问我的网站主页。现在,在我的主页上,我设置了一个链接SignIn我想知道当用户点击SignIn链接时如何将我的用户重定向到ACS默认登录页面?类似当asp.net应用程序将用户重定向到ACS登录页面时如果用户不是经过身份验证并尝试访问由授权属性

修饰的控制器

4 个答案:

答案 0 :(得分:1)

您可以使用SignInRequestMessage类手动构建URL,也可以调用

FederatedAuthentication.WSFederationAuthenticationModule.RedirectToIdentityProvider()(IIRC)。

答案 1 :(得分:1)

以下代码会将您重定向到联合帐户登录页面:

public class AccountController : Controller
{
    public ActionResult SignIn(string returnUrl)
    {
        if (String.IsNullOrEmpty(returnUrl))
        {
            returnUrl = Url.Content("~/");
        }

        var signInRequest = FederatedAuthentication.WSFederationAuthenticationModule.CreateSignInRequest(
            "passive",
            returnUrl,
            FederatedAuthentication.WSFederationAuthenticationModule.PersistentCookiesOnPassiveRedirects);

        return Redirect(signInRequest.RequestUrl);            
    }

    // SignOut, SignOutCallback below from typical MVC template
}

答案 2 :(得分:0)

此外 - 我相信WIF包含control,会显示该登录链接

答案 3 :(得分:0)

以下是我在MVC应用程序中的完成方式。

允许用户在web.cofig中使用此声明访问所有未受保护的页面:

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

在我的登录方法上使用RequireHttps属性:

[HttpGet]
[RequireHttps]
public ActionResult LogOn(string returnUrl)
{
     if (string.IsNullOrWhiteSpace(returnUrl))
       returnUrl = "/reports";

     return LogOnCommon(returnUrl);
}

并使用web.config的身份验证部分,其中我的登录页面为:

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="~/account/logon" timeout="2880" />
  </authentication>
</system.web>