0

私は Web アプリケーションとセキュリティに不慣れで、基本的な質問があります。

単一のデータベースと複数のアカウントを持つ単一の Java Web アプリケーションを想像してみてください。簡単にするために、人々が /item/item-id で自分の「アイテム」だけにアクセスできる to-do リストについて考えてみましょう。例えば:

  • User1 はアイテム 1 と 2 を作成します。
  • User2 はアイテム 3 と 4 を作成します。

たとえば、User2 が /item/1 にアクセスできないようにするにはどうすればよいですか?

これは、認証 (これは誰ですか?) と承認 (彼/彼女はどのような役割を持っているのか?) を超えているようです。

ユーザー アイテムの永続的なマップを保持し、応答を返す前に毎回確認する必要がありますか?

この問題に対する Spring (またはその他) のトリック/ヘルパーはありますか?

4

2 に答える 2

1

権限は「あなたの役割は何ですか?」ではありません。. それは「これをしてもいいですか?」です。. この役割は、サブジェクトが許可されるかどうかを決定する役割を果たします。

あなたが説明していることは、まさに承認の目的です。

User2 は のリソースにアクセスしようとしています (HTTP GET、POST、DELETE、PUT の CRUD を考えてください) /item/1。それらは許可されていますか?いいえ、アクセスを拒否します。


ユーザー アイテムの永続的なマップを保持し、応答を返す前に毎回確認する必要がありますか?

承認の実行方法はユーザー次第です。Spring セキュリティは、そのロジックをアプリケーション ロジックから分離しながら (必要に応じて)、データベースからそれを実行するための優れたツールを確実に提供します。

また、別のセキュリティ フレームワークであるApache Shiroもお勧めします。Spring セキュリティよりも構成が少し簡単で、認証/承認ロジックがより簡単だと思います。

于 2013-09-06T21:06:37.427 に答える