0

STSとWebの2つのサーバーがあります。STSサーバーでは、次のように呼び出します。

FormsService.SignIn(model.UserName, false);

次の行、私はチェックします:

User.Identity.IsAuthenticated

これはTRUEに設定されます。次に、Webサーバーにリダイレクトし、ヒットしたコントローラーで次のことを確認します。

User.Identity.IsAuthenticated

これはFALSEに設定されます。

What could cause this?

更新:STSWebサイトをWebサーバーに移動してみました。同じエラー/問題が発生します

更新:DEVサーバーが正常に機能することを忘れました。構成は同じです(サーバー名と証明書の拇印を除く)。これら2つのサーバーの唯一の違いは、1つ(DEV)が自己署名証明書を使用しており、ファイアウォールの内側にあることです。もう1つ(QA)は、公式(thawte)証明書を使用しており、ファイアウォールの側にあります。この証明書の共通名はサーバー名と一致しません(したがって、ファームで共有できます)。したがって、サイトにアクセスするときは、https:// [servername] / webではなくhttps:// [commonname] .com/webを使用してアクセスします。後者のアプローチを試しましたが(名前の不一致があるという証明書エラーが発生します)、それでも同じ結果が得られます。

また、STSサイトに直接アクセスして、そこから正常にログインできます。

4

3 に答える 3

0

STSサーバーからリダイレクトするときは、 を に送信するフォームを使用してリダイレクトする必要がありAutoPostます。tokenRelying party

そしてRelying party、トークンを受け取ると、そのユーザーに対して Cookie が作成されます。

そのため、次に Relying User.Identity.IsAuthenticatedparty でチェックすると、あなたが返されますTrue

詳細については、次のリンクを参照してください。

http://chris.59north.com/post/2013/03/27/Claims-based-identities-in-ASPNET-MVC-45-using-the-standard-ASPNET-providers.aspx

于 2013-08-04T07:51:07.607 に答える
0

ASP.NET 認証は、デフォルトで Cookie に基づいています。Cookie は Web ドメイン内に存在します。したがって、次のように 2 つのサーバーがインストールされている場合:

  1. http://www.web.com
  2. http://www.sts.com

Web サーバーが STS によって設定された Cookie を読み取ることができません

考えられる解決策は 2 つあります。

  1. 両方のサーバーをサブドメインとして実装する
  2. Cookie の代わりに認証チケットを URL に保存する

オプション 1 の場合、次のようにサーバーを移動します。

  1. http://www.web.yourdomain.com
  2. http://www.sts.yourdomain.com

web.config を更新して、cookie のスコープを yourdomain.com に設定します。

<authentication mode="Forms">
      <forms domain=".yourdomain.com"/>
</authentication>

URL にチケットを保存するには、この記事を確認してください - http://www.codeproject.com/Articles/2796/Cookieless-ASP-NET-forms-authentication

更新: STS が Security Token Service の略であることを理解していないようです。私の答えは関係ありません。:(

于 2012-06-09T18:55:05.177 に答える
0

RP を別のサーバーに移動したときに、同じ問題が発生しました。アプリケーション プール -> 詳細設定 -> 'Load User Profile' = true に設定する必要があることがわかりました。

その後、すべてが新しいサーバーで正常に機能し、User.Identity.IsAuthenticated は STS から戻った後に「true」を返しました。

于 2013-08-09T18:28:44.550 に答える