アプリケーション A とアプリケーション B の 2 つの Web アプリケーション間で SSO 認証を開発しようとしています。アプリケーション A は MVC 4 アプリケーションで、アプリケーション B は MVC 3 アプリケーションです。
起こるべきことは次のとおりです。
- ユーザーがアプリケーション B にアクセスしようとすると、アプリケーション A のログイン ページにリダイレクトされます。
- アプリケーション A にログインすると、アプリケーション B にリダイレクトされます。
実際に起こることは次のとおりです。
- ユーザーがアプリケーション B にアクセスしようとすると、ログインのためにアプリケーション A にリダイレクトされます
- ユーザーがアプリケーション A にログインすると、アプリケーション B にリダイレクトされます
- アプリケーション B は、ユーザーがまだログインしていないかのように、ログインのためにユーザーをアプリケーション A にリダイレクトするため、ここで何かが間違っています。
何が問題なのかを理解するために、次の手順を実行しました。
- アプリケーションBに認証Cookieが渡されていることを確認
- マシン キーの検証と復号化キーが web.config の両方のアプリケーションで同じであることを確認しました
- enableCrossAppRedirects が web.config で有効になっていることを確認しました
- このフォーラム投稿のコードを使用して、両方のアプリケーションが認証 Cookie を復号化できるかどうかを確認しました: http://forums.asp.net/t/1762166.aspx/1
- 認証 Cookie は、アプリケーション A では正常に復号化されますが、アプリケーション B では復号化されません。アプリケーション B では、FormsAuthentication.Decrypt メソッド中に「データを検証できません」という例外が発生します。
誰でもこれで私を助けることができますか?同じマシン キーを使用しているにもかかわらず、復号化に失敗したのはなぜですか? この認証方法に頼ることはできますか? この記事は、もはや信頼できないと言っているからです。 http://blog.appharbor.com/2012/02/22/asp-net-forms-authentication-considered-broken
ありがとう!