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以使其正常工作。