私はASP.NET MVC 5認証の新しいビットを見て、すべてが現在ClaimsIdentityであることに気づいています。私は、これらの値がどこに格納されているのだろうと思っていた:ASP.NET MVC 5のClaimsIdentity
セッション、キャッシュ、またはクッキーそのもの。
クッキーに保存されている場合は、クッキーのサイズ制限を超える前に保存できるクレーム数に明らかな制限があります。
私はASP.NET MVC 5認証の新しいビットを見て、すべてが現在ClaimsIdentityであることに気づいています。私は、これらの値がどこに格納されているのだろうと思っていた:ASP.NET MVC 5のClaimsIdentity
セッション、キャッシュ、またはクッキーそのもの。
クッキーに保存されている場合は、クッキーのサイズ制限を超える前に保存できるクレーム数に明らかな制限があります。
ClaimsIdentity自体には保存メカニズムがありません。しかし、OWINクッキーミドルウェアを使用している場合、それはクッキーに保存されます。そしてはい - 限界があります。
デフォルトでは、MVC5テンプレートはデータベースからClaimsIdentityを生成し、これをしばらくの間有効なクッキーフォームに保持します。ただし、ユーザーデータはデフォルトでSQLデータベースに格納されます。
デフォルトではドメインデータはSQL Serverに格納されていますが、その部分はわかりますが、その時点でClaimsIdentityオブジェクトを作成してAuthenticationManagerにフィードすると、同じデータがCookieに格納されます。データがクッキーに対して大きすぎると、サイズの制約に違反して拒否されるため、クッキーはブラウザに書き込まれません。 –
はい、Owin CookieMiddlewareは、ClaimsIdentityをCookieに変換します。 –
上記のように、さまざまなソースからのクレームは、デフォルトでOWINで認証プロセス中に作成されたCookieを介してセッション間で保持されます。これは通常、\ App_Start \ Startup.Auth.csに設定されます。 Cookieが期限切れになったとき、スライドの有効期限(Cookieタイムアウトが戻り値の訪問時に更新される)、認証/承認エンドポイントなどが必要かどうかなどを設定できます。後の部分では、ClaimsPrincipalの間に追加のクレームを提供することができますおよびClaimsIdentity作成プロセス。適切な有効期限を設定するには、ユーザーセッションに対してこれを1回だけ実行する必要があります。サイトに戻った後、OWINミドルウェアはCookieを解析し、このステップのすべてのクレームを再作成します。
クッキーのサイズを気にする必要はありません。新しいOWINの認証ミドルウェアは、クッキーチャンクを実装しています(現在、プレリリースソースから入手できます。安定版はチャンクではありません)。
私たちは企業内でこれを実装しました。私たちの内部シングルサインオンサービス、アクティブディレクトリ、独自のアプリケーションのデータベース(私たちが気にするユーザーに関するロールと追加のプロパティ)のいくつかのクレームソースを持っています。
Bummerので、Active Directoryから来る役割をどのように扱いますか?企業環境のために20または30になる可能性がありますか?何とかActive Directoryに接続されたハイブリッドClaimsIdentityを作成する必要があると思いますか? –
あなたはそれらをクッキーに保存しませんか? – leastprivilege
または、Windows認証を使用して、WindowsIdentityを取得します。 – leastprivilege