SlideShare a Scribd company logo
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
URL
Attention
https://bit.ly/devio2019-authz
#cmdevio #cmdevio2
✦
✦
✦
✦ 

✦
✦
✦ 

✦
✦ 

Twitter @daisuke_m
#cmdevio #cmdevio2






















#cmdevio #cmdevio2








#cmdevio #cmdevio2
API
UI
#cmdevio #cmdevio2
✦
✦
✦
✦
✦
✦
✦
total
45 min
#cmdevio #cmdevio2


4 

ADI, ADF

#cmdevio #cmdevio2
#cmdevio #cmdevio2








#cmdevio #cmdevio2
✦
✦
✦ 

#cmdevio #cmdevio2


4 

ADI, ADF

#cmdevio #cmdevio2
























※ 

( )
#cmdevio #cmdevio2



 @PreAuthorize @PostAuthorize



 @PreFilter @PostFilter
※ 

Java Spring Security
#cmdevio #cmdevio2


4 

ADI, ADF

#cmdevio #cmdevio2
¥20,856




#cmdevio #cmdevio2
✦ 

adf: (adi) ↦ allow/deny (boolean)
✦ 

✦
✦ 

#cmdevio #cmdevio2
✦
✦
✦
✦
✦
✦
#cmdevio #cmdevio2
✦ Referer
✦
✦
✦
✦
✦
#cmdevio #cmdevio2
#cmdevio #cmdevio2
✦ 

✦
✦
✦
✦
✦
#cmdevio #cmdevio2


4 

ADI, ADF

#cmdevio #cmdevio2
✦
✦
✦
✦
✦
✦
#cmdevio #cmdevio2












emps.create({

"id": "ezaki"

});
POST /emps



{

"id": "ezaki"

}
#cmdevio #cmdevio2
✦
#cmdevio #cmdevio2
✦
✦ CreateEmp ListEmp GetEmp
UpdateEmp DeleteEmp
✦
✦
✦
✦
AWS
#cmdevio #cmdevio2
✦ 

adf: (adi) ↦ allow/deny (boolean)
@RequestMapping

fun getEmp(param: Any, adi: AccessDicisionInfo) {
if (adf(adi) == false) {
throw AccessDeniedException()
}
val resource = service.getEmp(param)
return Response.ok(resource)
}
#cmdevio #cmdevio2
ADI 



adf 

#cmdevio #cmdevio2
✦
✦ 

✦ adi.action
#cmdevio #cmdevio2
adi.sub.authorities
✦
{
"name": "ezaki",
"authorities": [
"ListEmp",
"GetEmp",
"UpdateEmp",
"UpdateEmpByAdmin"
]
}
{
"name": "takada",
"authorities": [
"ListEmp",
"UpdateEmp"
]
}
fun adf(adi: AccessDecisionInfo) {
return adi.sub.authorities.contains(adi.action)
}
#cmdevio #cmdevio2
✦
✦ UpdateEmp
UpdateEmp("kaga", {
"name": " "
})
UpdateEmp("kaga", {
"salary": 888888
})
by kaga by kaga
200 OK 403 Forbidden
#cmdevio #cmdevio2
✦
✦ UpdateEmp

✦ UpdateEmpByAdmin

✦ 

#cmdevio #cmdevio2
✦
✦
UpdateEmpByAdmin("kaga", {
"salary": 888888
})
UpdateEmp("kaga", {
"name": " "
})
UpdateEmpByAdmin UpdateEmp
200 OK (by ezaki) 200 OK (by kaga)

( API )403 Forbidden (by takada)
#cmdevio #cmdevio2
✦
✦ adi.action
✦ adi.sub.authorities
✦ adf
✦ adi.action adi.sub.authorities
✦ contains
#cmdevio #cmdevio2


#cmdevio #cmdevio2






#cmdevio #cmdevio2
postFilter
✦
✦ GetEmp
{
"id": "kaga",
"address": "...",
"name": "Kaga Masaru",
"tel": "090-0000-0006",
"salary": 999999,
"dept": 2
}
{
"id": "kaga",
"name": "Kaga Masaru",
"tel": "090-0000-0006",
"dept": 2
}
by ezaki by takada
#cmdevio #cmdevio2
✦
✦
✦
GetEmpByAdmin GetEmp
{
"id": "kaga",
"address": "...",
"name": "Kaga Masaru",
"tel": "090-0000-0006",
"salary": 999999,
"dept": 2
}
{
"id": "kaga",
"name": "Kaga Masaru",
"tel": "090-0000-0006",
"dept": 2
}
#cmdevio #cmdevio2
✦ 

✦
✦ ListEmp
✦
✦ ListEmp ListEmpForPartner
✦ ListEmp ListEmpForPartner
#cmdevio #cmdevio2
✦ 

✦
✦
✦
✦
✦
✦
✦
#cmdevio #cmdevio2
#cmdevio #cmdevio2
✦
✦ ezaki UpdateEmp("ezaki", p) name 

✦ ezaki UpdateEmp("kanou", p) name 

✦
✦ 

UpdateEmp
#cmdevio #cmdevio2
✦ 

/emps/ezaki
✦
✦ adi.obj.owner
✦ adi.sub.name adi.obj.owner
✦ adi.obj.owner
#cmdevio #cmdevio2
✦
{
"id": "ezaki",

"owner": "ezaki",
// ...
}
{
"id": "kanou",
"owner": "kanou",
// ...
}
fun adf(adi: AccessDecisionInfo) {
return adi.sub.name == adi.obj.owner
}
#cmdevio #cmdevio2
✦
✦ ezaki UpdateEmp("kaga", p) name 

✦ ezaki UpdateEmp("ushijima", p) name 

✦
✦ 

#cmdevio #cmdevio2
✦
✦ authorities
✦
✦
#cmdevio #cmdevio2
✦
{
"id": "kaga",

"acl": [
{ ezaki
UpdateEmp }
],
// ...
}
{
"id": "ushijima",
"acl": [],
// ...
}
fun adf(adi: AccessDecisionInfo) {
return adi.obj.acl.allow(adi.sub, adi.action)
}
#cmdevio #cmdevio2
✦ { ezaki UpdateEmp }
✦
{
"effect": "allow",
"action": "UpdateEmp",
"authority": "Leader"
}
{
"name": "ezaki",
"authorities": [
"Leader",
// ...
]
}
obj ADI ( ) sub ADI
#cmdevio #cmdevio2
✦
✦
✦ adf
✦
✦ adi.action
✦ adi.sub.name
✦ adi.sub.authorities
✦ adi.obj.owner
✦ adi.obj.acl
✦
#cmdevio #cmdevio2




https://classmethod.jp/recruit/
https://prismatix.jp/recruit/
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio

More Related Content

PDF
PostgreSQLアンチパターン
PDF
テスト文字列に「うんこ」と入れるな
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PPTX
CloudFront経由でのCORS利用
PDF
REST API のコツ
PPTX
世界一わかりやすいClean Architecture
PDF
イミュータブルデータモデルの極意
PPTX
テストコードの DRY と DAMP
PostgreSQLアンチパターン
テスト文字列に「うんこ」と入れるな
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
CloudFront経由でのCORS利用
REST API のコツ
世界一わかりやすいClean Architecture
イミュータブルデータモデルの極意
テストコードの DRY と DAMP

What's hot (20)

PDF
Keycloak拡張入門
PDF
オブジェクト指向の設計と実装の学び方のコツ
PDF
怖くないSpring Bootのオートコンフィグレーション
KEY
やはりお前らのMVCは間違っている
PPTX
WayOfNoTrouble.pptx
PDF
ソフトウェアにおける 複雑さとは何なのか?
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
イミュータブルデータモデル(世代編)
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PDF
例外設計における大罪
PDF
Dockerからcontainerdへの移行
PPTX
マイクロサービスにおける 結果整合性との戦い
PDF
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
PDF
ドメイン駆動設計 ( DDD ) をやってみよう
PDF
強いて言えば「集約どう実装するのかな、を考える」な話
PDF
React(TypeScript) + Go + Auth0 で実現する管理画面
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
PDF
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
PPTX
KeycloakでAPI認可に入門する
PPTX
RLSを用いたマルチテナント実装 for Django
Keycloak拡張入門
オブジェクト指向の設計と実装の学び方のコツ
怖くないSpring Bootのオートコンフィグレーション
やはりお前らのMVCは間違っている
WayOfNoTrouble.pptx
ソフトウェアにおける 複雑さとは何なのか?
SPAセキュリティ入門~PHP Conference Japan 2021
イミュータブルデータモデル(世代編)
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
例外設計における大罪
Dockerからcontainerdへの移行
マイクロサービスにおける 結果整合性との戦い
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
ドメイン駆動設計 ( DDD ) をやってみよう
強いて言えば「集約どう実装するのかな、を考える」な話
React(TypeScript) + Go + Auth0 で実現する管理画面
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
KeycloakでAPI認可に入門する
RLSを用いたマルチテナント実装 for Django
Ad

Similar to 認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio (11)

PDF
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
PDF
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
PDF
Glympse Client SDK Overview
PDF
Google tv
KEY
Czzawk
PDF
Артем Маркушев - JavaScript
PDF
Lambda expressions in C++
PDF
Orchestrating Big Data pipelines @ Fandom - Krystian Mistrzak Thejas Murthy
PDF
Effective codereview | Dave Liddament | CODEiD
PDF
De CRUD à DDD pas à pas
PDF
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
Glympse Client SDK Overview
Google tv
Czzawk
Артем Маркушев - JavaScript
Lambda expressions in C++
Orchestrating Big Data pipelines @ Fandom - Krystian Mistrzak Thejas Murthy
Effective codereview | Dave Liddament | CODEiD
De CRUD à DDD pas à pas
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
Ad

More from 都元ダイスケ Miyamoto (20)

PDF
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
PDF
AWSクラウドデータストレージ総論
PDF
20170312 F.K様向け ライフパートナーM.M様のご提案
PDF
Spring Day 2016 - Web API アクセス制御の最適解
PDF
マイクロWebアプリケーション - Developers.IO 2016
PDF
Single Command Deployのための gradle-aws-plugin講座
PDF
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
PDF
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
PDF
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
PDF
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
PDF
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
PDF
20130516 cm課外授業8-aws
PDF
20121215 DevLOVE2012 Mahout on AWS
PDF
20121206 VOYAGE LT - 名前重要って言うけどさ
PDF
20120830 DBリファクタリング読書会第三回
PDF
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
PDF
DevLOVE Beautiful Development - 第一幕 陽の巻
PDF
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
PDF
とべとべ電設部勉強会20100717 DB meets Jiemamy
PDF
2009-11-20 DevLOVE 2009 DB勉強会
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
AWSクラウドデータストレージ総論
20170312 F.K様向け ライフパートナーM.M様のご提案
Spring Day 2016 - Web API アクセス制御の最適解
マイクロWebアプリケーション - Developers.IO 2016
Single Command Deployのための gradle-aws-plugin講座
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20130516 cm課外授業8-aws
20121215 DevLOVE2012 Mahout on AWS
20121206 VOYAGE LT - 名前重要って言うけどさ
20120830 DBリファクタリング読書会第三回
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
DevLOVE Beautiful Development - 第一幕 陽の巻
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
とべとべ電設部勉強会20100717 DB meets Jiemamy
2009-11-20 DevLOVE 2009 DB勉強会

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Machine learning based COVID-19 study performance prediction
PDF
Modernizing your data center with Dell and AMD
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Encapsulation theory and applications.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Approach and Philosophy of On baking technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Electronic commerce courselecture one. Pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
NewMind AI Weekly Chronicles - August'25 Week I
Mobile App Security Testing_ A Comprehensive Guide.pdf
Big Data Technologies - Introduction.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Machine learning based COVID-19 study performance prediction
Modernizing your data center with Dell and AMD
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
“AI and Expert System Decision Support & Business Intelligence Systems”
Encapsulation theory and applications.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Empathic Computing: Creating Shared Understanding
Digital-Transformation-Roadmap-for-Companies.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Approach and Philosophy of On baking technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Electronic commerce courselecture one. Pdf
20250228 LYD VKU AI Blended-Learning.pptx

認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio