43

フォーム認証の場合、web.config でこれを使用しました (ドメイン属性に注意してください)。

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" name=".ASPXAUTH" protection="Validation" path="/" domain=".myserver.dev" />
</authentication>

サブドメイン間のシングル サインオンは、Mvc 5 の新しい ASP.NET Identity Framework 用にどのように構成されていますか?

より詳しい情報:

マルチテナント アプリケーションを作成しています。各クライアントはサブドメインになります。

client1.myapp.com

client2.myapp.com

ユーザーが にサインオンしてから、サインインしたままにできるようにしたいと考えていますclient1.myapp.comclient2.myapp.comこれはフォーム認証で簡単にできました。新しい Identity Framework でそれを行う方法を理解しようとしています。

編集

最終的に私のために働いたコードは次のとおりです。

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
  AuthenticationType = "Application",
  LoginPath = "/Account/Login",
  CookieDomain = ".myapp.com"
});
4

4 に答える 4

34

Startup.Auth.cs には、次のような内容が表示されます。

RC の場合:

app.UseSignInCookies();

これは RTM で削除され、Cookie 認証の明示的な構成に置き換えられました。

    app.UseCookieAuthentication(new CookieAuthenticationOptions {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/Account/Login")
    });

CookieAuthenticationOptions クラスには、あなたが探している CookieDomain プロパティがあります。

于 2013-10-07T16:49:47.723 に答える
15

これは、Identity 2.0 が認証 Cookie を暗号化するために依然としてマシン キーに依存していることを知るまで、私を夢中にさせていました。したがって、異なるサブドメインに同じアプリケーションの 2 つのインスタンスが必要な場合は、各アプリケーションに同じマシン キーを設定する必要があります。

要約すると:

  1. CookieDomain = ".myapp.com"
  2. 各アプリケーションの Web 構成で同一のマシン キーを設定する

    <system.web>
      <machineKey decryptionKey="EEEB09D446CCFE71B82631D37DEDCC917B8CB01EC315" validationKey="60E4EFE8DD26C4BF8CDAEDCA10716C85820839A207C56C8140DB7E32BE04630AD631EDF25C748D0F539918283C5858AF456DBE208320CFFA69244B4E589" />
    </system.web>
    

この回答により、値を設定するようになりました: ASP.NET Identity 2 は machinekey を使用してパスワードをハッシュしますか?

于 2014-07-12T01:32:11.363 に答える
13

web.config で、すべての Web サイト/アプリケーションに対して同じ machineKey を設定する必要があります。

すべての Web サイトには、少なくともこの構成が必要です。

http://msdn.microsoft.com/en-us/library/w8h3skw9(v=vs.85).aspx

<system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" name=".ASPXAUTH" protection="Validation" path="/" domain=".myserver.dev" />
    </authentication>
    <machineKey validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" validation="SHA1" decryption="Auto"/>
  </system.web>

これは一例です

于 2013-10-11T15:16:45.533 に答える
13

Startup.Auth.cs ファイルで、CookieDomainドメインのパラメーターを追加します。

var cookieAuthenticationOptions = new CookieAuthenticationOptions
{
    AuthenticationType  = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath           = new PathString("/Account/Login"),
    CookieDomain        = ".mydomain.com"
};

次に、すべての Web サイトに対して、一意のマシン キーを設定する必要があります。新しいものを生成する最も簡単な方法は、IIS を使用することです。

サイトで「マシン キー」オプションを見つけます。

ここに画像の説明を入力

[キーの生成] ボタンをクリックして、キーを取得します。

ここに画像の説明を入力

最後に、上記のプロセスにより以下が追加web.configされます。これが各サイトにコピーされていることを確認する必要があります。

<machineKey
  validationKey="DAD9E2B0F9..."
  decryptionKey="ADD1C39C02..."
  validation="SHA1"
  decryption="AES"
/>
于 2015-09-28T10:18:23.970 に答える