質問: Spring Security Referenceの11.Authorization を読んでいたところ Voting-Based AccessDecisionManager Implementations というのが出てきました。 Authorization(認可)で、Voting-Based(投票に基づいた?)となり理解できなくなりました。 Voting-Based AccessDecisionManagerとはなんでしょうか? Votingは投票と理解してしまってよいのでしょうか? 認可を与えるのを投票に見立てた考え方ですかね?(投票って考え方はよく見かける考え方なのでしょうか?) 1票でも入ったらよいのか、複数票必要なのかよくわからず...
回答: Qiitaの Spring Security 使い方メモ 認証・認可 の記事がよくまとまっていてるので読むと良いと思います。 例えば、「1票でも入ったらよいのか、複数票必要なのかよくわからず...」については、上記記事の”投票による判定”の節(記事の真ん中辺り)で以下のように説明されています。 > > AccessDecisionManager の実装クラスには、集計方法の違いによって AffirmativeBased, ConsensusBased, UnanimousBased の3つが用意されている。 > > > AffirmativeBased 「付与」の投票が1つでもあればアクセス権を認める。 全ての投票が「棄権」だった場合は、デフォルトではアクセス権を認めない。 ConsensusBased 「付与」の投票が「拒否」の投票よりも多ければアクセス権を認める。 「付与」と「拒否」が同数だった場合は、デフォルトではアクセス権を認める。 全ての投票が「棄権」だった場合は、デフォルトではアクセス権を認めない。 UnanimousBased 全ての投票が「付与」の場合はアクセス権を認める。 全ての投票が「棄権」だった場合は、デフォルトではアクセス権を認めない。 デフォルトで使用されるのは AffirmativeBased になる。