2017-07-20 19 views
0

を編集すると詳細が追加されます。ASP.NET ID Cookieがサブドメインに保存/設定されていません

私は、認証サーバー(例:example.com)として効果的に使用するWebプロジェクトを持っています。私は次に、サブドメインとして座っているいくつかのウェブサイトを持っています(例えば、sub1.example.com、sub2.example.com)。私は現在、認証サーバーにログインするときにサブドメインに保存するように.AspNet.CookiesのCookieを取得できません。私は応答でクッキーが戻ってくるのを見ることができますが、設定されていません。

私は、CookiePathCookieDomainを設定するなど、さまざまな解決策を探して試しました。私はWeb.configファイルのすべてのサイト間で一致するマシンキーを確認しました。 、私は、認証サーバ上で有効にCORSを持っていると私は私がログインしたときにベアラートークンを受け取ることができています

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    LoginPath = new PathString("/Account/Login"), 
    CookieDomain = ".example.com", 
}); 

私だけにクッキーを取得するように見えることはできません。これは私がCookie認証を有効にしていますどのように現在あります救われる。

ありがとうございます。

編集:私はどこかでARRAffinityのクッキーが物事に混乱する可能性があるので、私はそれも無効にしました。私はまだサブドメインのクッキーを見ることができません。

編集2:(パスワードおよびドメインはポストとの一貫性のために変更されている)コメントで要求されるようにAJAX呼び出しを追加:私は答えでショットを取るつもりです

$.ajax({ 
    url: 'https://example.com/auth/token', 
    method: 'POST', 
    data: { 
     grant_type: 'password', 
     username: '[email protected]', 
     password: '************' 
    }, 
    crossDomain: true 
}); 
+0

こんにちは!クッキーが設定されていないと言ったら、ブラウザはそれを送信していないと言っていますよね? CookieDomainで設定しようとした値は?あなたは 'mydomain.com'または' .mydomain.com'を試しましたか(最初に点に気付いていますか?) –

+0

私はフィドラーでレスポンスを見ると、サーバーから戻ってくるクッキーを見ることができます。しかし、ブラウザは_specific_クッキーのSet-Cookieヘッダーを無視しています。私は 'mydomain.com'と' .mydomain.com'を試しましたが、違いはありません。 – ipshing

+0

クッキーの作成方法を示すコードサンプルを提供してください。 –

答えて

1

ここに。

デフォルトでは、サイト間のAjaxリクエストを行うと、ブラウザはCookieを無視します。この詳細についてはhereをご覧ください。

クッキーの使用を許可するには、あなたがそう(詳細はhere)のように、あなたの要望にtruewithCredentialsを設定する必要があります。

$.ajax({ 
    url: 'https://example.com/auth/token', 
    method: 'POST', 
    data: { 
     grant_type: 'password', 
     username: '[email protected]', 
     password: '************' 
    }, 
    crossDomain: true, 
    xhrFields: { 
     withCredentials: true 
    } 
}); 

私はローカルでこれをテストしてみたこれが唯一の場合は十分なはずあなたが必要とするものはexample.comで認証してから、sub1.example.comとやりとりしながらCookieを使い続けることです。

あなたもexample.comにクッキーとリクエストを作りたいと回答は、ブラウザによって無視したくない場合は、this linkによるとあなたはexample.comもヘッダAccess-Control-Allow-Credentials: trueを返すことを確認してください。

+0

はい!これはまさに問題でした。リクエストに 'withCredentials'を追加し、' CorsPolicy'で 'SupportsCredentials = true'を設定すると、すべてが一緒になりました。ありがとうございました。 – ipshing

関連する問題