67414


[Spring Security Reference](https://docs.spring.io/spring-
security/site/docs/5.4.0-M1/reference/html5/#servlet-
authorization)の[11.Authorization](https://docs.spring.io/spring-
security/site/docs/5.4.0-M1/reference/html5/#servlet-authorization) を読んでいたところ
[Voting-Based AccessDecisionManager
Implementations](https://docs.spring.io/spring-
security/site/docs/5.4.0-M1/reference/html5/#authz-voting-based) というのが出てきました。

Authorization（認可）で、Voting-Based（投票に基づいた？）となり理解できなくなりました。  
Voting-Based AccessDecisionManagerとはなんでしょうか？ Votingは投票と理解してしまってよいのでしょうか？

認可を与えるのを投票に見立てた考え方ですかね？（投票って考え方はよく見かける考え方なのでしょうか？）

1票でも入ったらよいのか、複数票必要なのかよくわからず...


CC BY-SA 4.0
2020-06-08T00:35:19.837
67404
2020-06-10T02:26:50.653
2020-06-10T02:26:50.653
9008
9008
question
java spring kotlin spring-boot spring-security
Voting-Based AccessDecisionManagerとはなんですか？


Qiitaの [Spring Security 使い方メモ
認証・認可](https://qiita.com/opengl-8080/items/032ed0fa27a239bdc1cc)
の記事がよくまとまっていてるので読むと良いと思います。

例えば、「1票でも入ったらよいのか、複数票必要なのかよくわからず...」については、上記記事の”投票による判定”の節(記事の真ん中辺り)で以下のように説明されています。

> AccessDecisionManager の実装クラスには、集計方法の違いによって AffirmativeBased, ConsensusBased,
> UnanimousBased の３つが用意されている。

AffirmativeBased  
「付与」の投票が１つでもあればアクセス権を認める。  
全ての投票が「棄権」だった場合は、デフォルトではアクセス権を認めない。

ConsensusBased  
「付与」の投票が「拒否」の投票よりも多ければアクセス権を認める。  
「付与」と「拒否」が同数だった場合は、デフォルトではアクセス権を認める。  
全ての投票が「棄権」だった場合は、デフォルトではアクセス権を認めない。

UnanimousBased  
全ての投票が「付与」の場合はアクセス権を認める。  
全ての投票が「棄権」だった場合は、デフォルトではアクセス権を認めない。  
デフォルトで使用されるのは AffirmativeBased になる。


CC BY-SA 4.0
2020-06-08T05:27:44.313
67414
2020-06-08T05:27:44.313
217
67404
answer