4

我正试图在2个Web应用程序,应用程序A和应用程序B之间开发SSO身份验证。应用程序A是MVC 4应用程序,应用程序B是MVC 3应用程序。SSO表单身份验证问题。无法解密身份验证Cookie

发生的事情是:

  1. 当用户试图访问应用程序B,他将被重定向到应用程序的登录页面,他登录到应用A A
  2. 后,他将被重定向以应用程序B

什么实际发生的是:

  1. 用户试图访问APPLI阳离子B,他被在应用一个重定向到应用程序用于登录
  2. 用户登录时,他被重定向到应用程序B
  3. 这里的东西是错误的,因为应用程序B将用户重定向回应用程序用于登录仿佛他在又

不会记录我所做的这些步骤弄清楚什么是错的:

  1. 证实,身份验证cookie被传递给应用程序B
  2. 证实计算机密钥验证和解密密钥是
  3. 确认enableCrossAppRedirects在web.config中启用
  4. 我曾经在这个论坛帖子的代码,以找出是否这两个应用程序都能够解密的身份验证在web.config中两个应用程序相同饼干:http://forums.asp.net/t/1762166.aspx/1
  5. 验证cookie被成功解密应用程序A,但不应用B.申请B给出“无法验证数据” FormsAuthentication.Decrypt方法中的异常

谁能帮助我?即使他们使用相同的机器密钥,为什么解密失败?我甚至可以依靠这种身份验证方法吗?因为这篇文章说它不再可靠。 http://blog.appharbor.com/2012/02/22/asp-net-forms-authentication-considered-broken

谢谢!

+0

你是如何将cookie从A传递给B的?我假设他们在不同的领域? –

+0

不,它位于相同的域,但不同的Web应用程序。该cookie由请求头中的浏览器自动传递。 –

+0

像这样:https://www.app.com/a/login和https://www.app.com/b/login? –

回答

3

如果终于找到问题了。问题是由于应用程序A针对.NET框架4.5和应用B的目标是.NET Framework 4的

我怀疑这之前,但显然改变了项目属性的目标框架是不够的。您必须将此<httpRuntime targetFramework="4.5"/>添加到应用程序B web.config以使其正常工作。