認証とセッションを共有するサブドメインをサポートするように DEV 環境を構成しようとしています。
現在、mydomain、sd1.mydomain、sd2.mydomain、sd3.mydomain の要求を処理するように、DEV マシンで IIS とホスト ファイルを構成しました。Web アプリケーション自体は期待どおりに動作しており、認証が必要なページを除いて、すべてのサブドメインのすべてのページを閲覧できます。ログインしようとすると、サーバー側ではすべてが完璧に見えますが (ユーザーが見つかり、Cookie が作成され、応答に追加されました)、Cookie がブラウザーに届きません (Chrome と IE を試しました)。
認証チケットを作成して保存するコードがあり、web.config の authentication.forms に domain=".mydomain" を設定します。
var now = DateTime.UtcNow.ToLocalTime();
var ticket = new FormsAuthenticationTicket(
1 /*version*/, _user.Username, now, now.Add(FormsAuthentication.Timeout),
isPersistentCookie, _user.Username, FormsAuthentication.FormsCookiePath);
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.HttpOnly = true;
if (ticket.IsPersistent)
{
cookie.Expires = ticket.Expiration;
}
cookie.Secure = FormsAuthentication.RequireSSL;
cookie.Path = FormsAuthentication.FormsCookiePath;
if (FormsAuthentication.CookieDomain != null)
{
cookie.Domain = FormsAuthentication.CookieDomain;
}
_httpContext.Response.Cookies.Add(cookie);
デバッグすると、上記のコードは正常に動作し、ユーザーは正しく、正しいドメインの Cookie が応答に追加されます。
domain=".mydomain" を web.config から削除すると、認証は機能しますが、サブドメインではなく mydomain でのみ機能します。
私が間違っていることは何ですか?