单点登录 ASP.NET MVC

8
我们正在尝试使用ASP.NET MVC构建跨域单点登录解决方案。
是否有现有的解决方案或教程可用?

1
服务器之间或者说连接同一个数据库的话,解决方案就比较简单了。 - David Perlman
嘿 - 是的 www.example.com - 是一个带有数据库的单一网站。该数据库在所有登录中是共用的吗?因此,基本上只是“远程”网站必须通过验证才能访问www.example.com等。 - Mike
1个回答

10

如果您的 Web 应用程序位于同一服务器同一域上,则您需要确保在 Web 配置文件中(machineKey)Validationkey 和加密密钥相同。

在您的示例中,您需要将身份验证票据附加到查询字符串以将其传输回另一个域,例如:

public void Login(string userName, string password)
{
    if(AuthenticateUser(userName,password))
    {
        Response.Redirect(String.format("{0}?{1}={2}"), 
            Request.QueryString["ReturnUrl"],
            FormsAuthentication.FormsCookieName,
            FormsAuthentication.GetAuthCookie(userName, false).Value));
    }
}

在本地应用程序中,您需要启用无 cookie 的表单验证,并通过设置 enableCrossAppRedirect 允许来自外部应用程序的已验证用户。

<authentication mode="Forms">
    <forms enableCrossAppRedirect="true" cookieless="useUri" />
</authentication>

注:

  1. 另请参见 FormsAuthentication.RedirectFromLoginPage - http://msdn.microsoft.com/en-us/library/ka5ffkce.aspx

  2. 在我的情况下,ReturnUrl 丢失了 URL 的域部分 :(


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接