質問

.NETクレームベースのIDフレームワーク

アカウント、特定のアカウント#123456(銀行口座のようにビジネスエンティティについて話している)で操作を行う(表示または編集)を制限したい場合は、クレームを作成することは良い考えですか?各アカウントについて、彼らは表示または編集できますか?

セットに多くのクレームを持っていることの不利な点はありますか?システム管理者は、システム内のすべてのアカウントにアクセスできるため、数百のクレームを作成します(各アカウントに対して複数のアカウントを作成します)

役に立ちましたか?

解決

大きなクレームセットの最も差し迫った結果は、トークンがネットワーク上のすべての関係システム間で前後に交換されるため、パフォーマンスが低いことです。デフォルトでは、たとえばWIFはトークンをシリアル化し、それらをCookieに入れます。そのため、実際には、そこに保存できるデータの量も限られています。これに対処する他の方法がありますが、根本的な問題は持続します。

2番目の考慮事項は、ユーザーとアカウントの間の関連性を誰とどこで管理するかです。それがアプリケーション固有のものである場合、それらの関連付けを中央STS(請求の発行者)にプッシュする可能性は低いです。次に、2つのSTSで終わります。ユーザー(およびIDプロバイダー:IDP)を識別するものと、IDPが発行したトークンをアプリに搭載したものに変換するアプリケーション固有のSTS(特定のユーザーのアカウントリストを含む)

そうは言っても、協会はユーザーと彼のアカウントが多くのアプリケーションの間で再利用可能なものである可能性があり、それを専門的なSTの後ろに置くことは理にかなっているかもしれません。

情報の潜在的な非陰謀の開示である3番目の考慮事項があります。アプリケーションは、ユーザーXがアカウント123にアクセスできるかどうかを知る必要がある場合があります。すべてのアカウントのリストを提供することにより、ユーザーXが必要な情報を開示しています。

一般的なガイドラインとして、主張は「粗粒」の属性に適しています。 「細かい」アクセス制御は、おそらくインフラストラクチャの最適化を使用できるアプリ内でより適切に処理されます。

極端な例は次のとおりです。ファイルシステムを想像してください。ユーザーがアクセスできるファイルの名前をクレームするようにエンコードしますか?ありそうもない、あなたは何百万人になってしまうかもしれないから...

別の極端な例:データベースに行レベルのセキュリティを実装したい場合。ユーザーごとにrow_idをクレームするようにエンコードしますか?繰り返しになりますが、それは非常にアプリケーション固有の可能性があるため、データベースクエリで行フィルタリングを解決するのがおそらく簡単(そしてはるかに効率的)であるためです(これはインフラストラクチャの最適化の例です)

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