多くの主張を許可するために、ASP.NET IDで大きなクッキーを小さなものに分離する方法は?

StackOverflow https://stackoverflow.com//questions/25025979

質問

私たちのMVCアプリケーションのためのクレームベースの許可のプロトタイプに取り組んでいます。認証にASP.NET IDを使用します。

すべてのコントローラの行動の主張をしてから、ユーザーの主張を与えたり奪ったりしたいので、私たちは誰がどこに行くことができるかを非常に細かいコントロールがあります。

私たちのアプリケーションはすでに800以上の行動を持っていて成長し続けます。私はこの数の請求を取り扱うことができる方法を見るために少しテストアプリを作りました。問題に遭遇します。クッキーは4092バイトに制限されています。

とクレームが多数あると、ID認証Cookieが増加します。短い名前/価値観と約600クレーム(5文字)4K以上のクッキーをお願いします。この数のクレームを持つユーザーは、ログインできません - Cookieはブラウザに設定できません。

と600クレームは私たちのアプリの限界ではありません。私たちはおそらくそれ以上のものが必要です。

auth-cookieをいくつかの小さなクッキーに分離する方法はありますか?

p.S。あなたが興味があるなら、ここに私のhref="https://github.com/trailmax/claimsauthorisation/blob/master/claimsauth/controllers/profilercontroller.cs" real="nofollow noreferrer">コード chunkingCookieManager cookiauthenticationMiddleWare < / a>。

このコードが非常に新鮮なものであること(2014年7月10日、20日だけチェックされた) NUGET Microsoft.owin .security.cookies 。生産サイトでRC2を使用したいとわかりません。

他の方法?

役に立ちましたか?

解決 2

直接質問を解決していません。クッキーが大きすぎ、大きな数やクレームで大きく維持されます。 OWIN V3.0(現在RC2ではなく、製造対応ではありません)は、クッキーを小さなものにチャンクする方法があります。しかし、大クッキーはただ悪いです。だから私は主張を保つためのサーバー側のみを保ちます。

私は識別フォーラムの議論とこの質問に完全に対処する質問。質問を基づいて、私は自分のソリューションとプロトタイプをやった少しMVCアプリをやりました: https://github.com/ TRAILMAX /クレーム認証

解の中核はスタートアップルーチン MVCフィルタ必要なクレームがユーザーに利用可能かどうかを確認します。

他のヒント

あなたはクレームを誤って使っています。クレームは、実行が許可されているアクションではなく、ユーザーの身元を表しています。ユーザー権限のための家としてクレームを治療しているので問題に遭遇しています。あなたは本当にあなたのアプリケーションで2つを分離する方法を見つけるべきです。

MVCファッションでは、これはカスタム承認属性を作成し、クレームCookieからのユーザーの身元を取得し、ユーザーの識別情報が何らかのアクションを実行できることを確認します。

下記の関連質問を見てください。

レコードへのアクセスを制限します。クレームベースの権限は良い考え

特定リソースの承認

役割を使うべきです

[Authorize(Roles = "Admin, Role1")]
  public ActionResult Index(string id)
{....}
[Authorize(Roles = "Admin, Role2")]
  public ActionResult Index2(string id)
{....}
[Authorize(Roles = "Admin, Role1, Role3")]
  public ActionResult Index3(string id)
{....}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top