4

アプリケーション A とアプリケーション B の 2 つの Web アプリケーション間で SSO 認証を開発しようとしています。アプリケーション A は MVC 4 アプリケーションで、アプリケーション B は MVC 3 アプリケーションです。

起こるべきことは次のとおりです。

  1. ユーザーがアプリケーション B にアクセスしようとすると、アプリケーション A のログイン ページにリダイレクトされます。
  2. アプリケーション A にログインすると、アプリケーション B にリダイレクトされます。

実際に起こることは次のとおりです。

  1. ユーザーがアプリケーション B にアクセスしようとすると、ログインのためにアプリケーション A にリダイレクトされます
  2. ユーザーがアプリケーション A にログインすると、アプリケーション B にリダイレクトされます
  3. アプリケーション B は、ユーザーがまだログインしていないかのように、ログインのためにユーザーをアプリケーション A にリダイレクトするため、ここで何かが間違っています。

何が問題なのかを理解するために、次の手順を実行しました。

  1. アプリケーションBに認証Cookieが渡されていることを確認
  2. マシン キーの検証と復号化キーが web.config の両方のアプリケーションで同じであることを確認しました
  3. enableCrossAppRedirects が web.config で有効になっていることを確認しました
  4. このフォーラム投稿のコードを使用して、両方のアプリケーションが認証 Cookie を復号化できるかどうかを確認しました: 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

ありがとう!

4

1 に答える 1

3

Uf ..ようやく問題が見つかりました。この問題は、アプリケーション A が .NET Framework 4.5 を対象としており、アプリケーション B が .NET Framework 4 を対象としているために発生しました。

以前はこれを疑っていましたが、プロジェクト プロパティでターゲット フレームワークを変更するだけでは十分ではないようです。<httpRuntime targetFramework="4.5"/>これを機能させるには、これをアプリケーション B の web.config に追加する必要があります。

于 2012-12-28T16:40:37.373 に答える