我们正在尝试使用 ASP.NET MVC 构建跨域单点登录解决方案。
有可用的现有解决方案或教程吗?
最佳答案
如果您的 Web 应用程序位于同一服务器和同一域上,那么您所需要做的就是确保 Web 配置中的验证 key 和加密 key 相同(机器 key )。
在您的示例中,您需要将身份验证票证附加到查询字符串,以将其传输回其他域,例如:
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>
<小时/>
注释:
另请参见 FormsAuthentication.RedirectFromLoginPage -http://msdn.microsoft.com/en-us/library/ka5ffkce.aspx .
就我而言,ReturnUrl 丢失了 url 的域部分:(
关于jquery - 单点登录 ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2797412/