5

私はASP.NET MVC 5認証の新しいビットを見て、すべてが現在ClaimsIdentityであることに気づいています。私は、これらの値がどこに格納されているのだろうと思っていた:ASP.NET MVC 5のClaimsIdentity

セッション、キャッシュ、またはクッキーそのもの。

クッキーに保存されている場合は、クッキーのサイズ制限を超える前に保存できるクレーム数に明らかな制限があります。

答えて

3

ClaimsIdentity自体には保存メカニズムがありません。しかし、OWINクッキーミドルウェアを使用している場合、それはクッキーに保存されます。そしてはい - 限界があります。

+0

Bummerので、Active Directoryから来る役割をどのように扱いますか?企業環境のために20または30になる可能性がありますか?何とかActive Directoryに接続されたハイブリッドClaimsIdentityを作成する必要があると思いますか? –

+0

あなたはそれらをクッキーに保存しませんか? – leastprivilege

+0

または、Windows認証を使用して、WindowsIdentityを取得します。 – leastprivilege

0

デフォルトでは、MVC5テンプレートはデータベースからClaimsIdentityを生成し、これをしばらくの間有効なクッキーフォームに保持します。ただし、ユーザーデータはデフォルトでSQLデータベースに格納されます。

+0

デフォルトではドメインデータはSQL Serverに格納されていますが、その部分はわかりますが、その時点でClaimsIdentityオブジェクトを作成してAuthenticationManagerにフィードすると、同じデータがCookieに格納されます。データがクッキーに対して大きすぎると、サイズの制約に違反して拒否されるため、クッキーはブラウザに書き込まれません。 –

+0

はい、Owin CookieMiddlewareは、ClaimsIdentityをCookieに変換します。 –

2

上記のように、さまざまなソースからのクレームは、デフォルトでOWINで認証プロセス中に作成されたCookieを介してセッション間で保持されます。これは通常、\ App_Start \ Startup.Auth.csに設定されます。 Cookieが期限切れになったとき、スライドの有効期限(Cookieタイムアウトが戻り値の訪問時に更新される)、認証/承認エンドポイントなどが必要かどうかなどを設定できます。後の部分では、ClaimsPrincipalの間に追加のクレームを提供することができますおよびClaimsIdentity作成プロセス。適切な有効期限を設定するには、ユーザーセッションに対してこれを1回だけ実行する必要があります。サイトに戻った後、OWINミドルウェアはCookieを解析し、このステップのすべてのクレームを再作成します。

クッキーのサイズを気にする必要はありません。新しいOWINの認証ミドルウェアは、クッキーチャンクを実装しています(現在、プレリリースソースから入手できます。安定版はチャンクではありません)。

私たちは企業内でこれを実装しました。私たちの内部シングルサインオンサービス、アクティブディレクトリ、独自のアプリケーションのデータベース(私たちが気にするユーザーに関するロールと追加のプロパティ)のいくつかのクレームソースを持っています。