3つのASP.NET MVC 5プロジェクトが並行して機能しています。認証のために、我々はシングルサインオンを使用して来た、非常に簡単なチュートリアル、以下:シングルサインオンプロジェクトでのIDクレームの取得
Implementation of Single Sign On (SSO) in ASP.NET MVC
主なアイデアは、3間で共有MachineKey
を作成し、3つのweb.config
ファイルで同じ認証設定を追加することです。
- SSO
- にWebApp1
- webapp2を私たちのプロジェクトの
ワン(SSO
)仕事をしていませんし、他の2つはそれに依存する:
は、だから今、私たちは3と呼ばれるサイトを持っています。それはうまくいきました...
SSO
プロジェクトでは、ID 2クレームベースの認証を使用しています。ユーザーがログインすると、「ID」にカスタムクレームが追加されます。このようにして、私たちは2つの別々のクッキーを持っています:一つはシングルサインオンプロセス用、もう一つはクレームを保存するためです。ここで
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string fromSite, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
// here the cookie which contains claims *is created* by Identity 2
// here we create the cookie used for Single Sing On
FormsAuthentication.SetAuthCookie(username, false);
// redirecting
if (string.IsNullOrWhiteSpace(fromSite))
{
if (string.IsNullOrWhiteSpace(returnUrl)) return RedirectToAction("Index", "Home");
return RedirectToLocal(returnUrl);
}
return Redirect(string.Format("{0}{1}", fromSite, returnUrl));
// other cases inside switch
.
.
.
}
}
ユーザーが別のSSO
のサイトから行く、WebApp1
を言って、彼がログインしたままになりますが、私たちは主張を失いました。
これらの2つのCookieをマージし、別のサイトのクレームを取得する方法はありますか?