私の MVC Web アプリでは、内部認証と Windows Azure Active Directory (ACS なし) の両方を ID プロバイダーとして使用しようとしていました。このアプリを Azure アプリケーションに追加して、Azure からユーザーを認証できるようにすることができました。
ACS なしで、Azure ユーザーとローカル ユーザーの両方を使用してログインできました。
私の問題は、Web アプリから Azure ユーザーをログアウトできないことです。ローカル ユーザーはログオフをクリックするとログアウトされますが、問題は azure アカウントにあります。デフォルトのシンプルな MVC サンプル アプリを使用してこれらをテストし、あちこちにいくつかの変更を加えましたが、大きな変更はありません。
[HttpPost]
// [ValidateAntiForgeryToken]
public ActionResult LogOff()
{
Session.Clear();
Session.Abandon();
WebSecurity.Logout();
FormsAuthentication.SignOut();
return RedirectToAction("Login", "Account");
}
これは、ログオフに使用したコードです。私の見解では、偽造トークンの問題にも直面しました。@Html.AntiForgeryToken() を追加しても役に立ちませんでした。
私の実際のコードは -
[HttpPost]
// [ValidateAntiForgeryToken]
public ActionResult LogOff()
{
WebSecurity.Logout();
return RedirectToAction("Login", "Account");
}
しかし、いくつかのブログで見つけたいくつかの提案に基づいて、これを前者に変更しました。
Azure ユーザーをログアウト/サインアウトするにはどうすればよいですか? この問題に役立つ Cookie を削除することはできますか?
[ログオフ] をクリックすると、実際にログアウトせずに同じページが返されます。しかし、内部アカウントを使用すると、アプリからログアウトしてログイン ページに戻ることができます。
私は VS2012 を使用し、WS-Federation (プロトコル) と Windows Identity Foundation (WIF) 4.5 (フレームワーク) を使用して、Identity and Access ツールを使用して Azure AD に接続しました。
ありがとう !