Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
1. Copyright
(C)
DeNA
Co.,Ltd.
All
Rights
Reserved.
Mobage Connect と
Identity 関連技術への
取り組み
OpenID Summit 2015
November
10,
2015
Toru
Yamaguchi
Senior
Architect
Sub
Business
Unit
Head
Open
Pla=orm
Business
Unit
DeNA
Co.,
Ltd.
13. Copyright
(C)
DeNA
Co.,Ltd.
All
Rights
Reserved.
Access
Token
への
JWT
の利利⽤用と
Microservices
Mobage
Connect
と
Identity
関連技術への取り組み
13
14. Copyright
(C)
DeNA
Co.,Ltd.
All
Rights
Reserved.
Microservices
と
Access
Token
の相性が悪い件
! Microservices
はサービスごとに独⽴立立したインスタンスや
DB
を持ち、
API
をインターフェースとして結合する
Thin
なやり⽅方
⁃ そのようなケースで
Token
DB
をどう参照するのか?
14
AuthZ
Server
Token
DB
Client
Resource
Server
Token
Endpoint
1.
Token
Request
3.
Token
Response
2.
Store
Token
4.
Request
to
Resource
Server
異異なるネットワークにある
Token
DB
をどう参照するか?
15. Copyright
(C)
DeNA
Co.,Ltd.
All
Rights
Reserved.
OAuth
2.0
Token
IntrospecMon
(RFC
7662)
! Introspection
Endpoint
で
Access
Token
の検証を
AuthZ
Server
に依頼する事が出来る
⁃ これで⼀一応
Microservices
にも対応出来るようになる
15
AuthZ
Server
Token
DB
Client
Resource
Server
Token
Endpoint
1.
Token
Request
3.
Token
Response
2.
Store
Token
6.
Lookup
Token
4.
Request
to
Resource
Server
IntrospecUon
Endpoint
5.
IntrospecUon
Request
7.
IntrospecUon
Response
16. Copyright
(C)
DeNA
Co.,Ltd.
All
Rights
Reserved.
IntrospecMon
API
の課題点
! アーキテクチャにも依るが、API
Gateway
以下でも
Access
Token
をその
まま通過させて、各
Service
へのリクエストにした場合、厳密には
Service
ごとに
Access
Token
の検証が必要であろう
⁃ 速度度重視の
API
に不不要なラウンドトリップが発⽣生する
⁃ つまり⼤大規模な
Microservices
に対して、採⽤用を躊躇わざるを得ない
! ⼀一つの解決策として
API
Gateway
のみ
Introspection
Endpoint
を使うと
なりそう
16
Client
API
Gateway
API
(1)
API
(3)
API
(2)
1.
API
Request
2.
3.
4.
5.
17. Copyright
(C)
DeNA
Co.,Ltd.
All
Rights
Reserved.
Access
Token
に
JWT
を使う
! Access
Token
は
exp
を迎える前に
revoke
さえされければ、
Resource
Server
でのアルゴリズム的な検証のみで良良い
⁃ また
/_̲ext/st
は
Scope
Token
(どんな権限があるか)
17
(注意)
実際の
Mobage
Connect
の
Access
Token
と⼀一部フォーマットが異異なります
24. Copyright
(C)
DeNA
Co.,Ltd.
All
Rights
Reserved.
Custom
URI
の中間者攻撃
! 同じ
Custom
URI
を持つ
App
が複数あったらどうなるか
⁃ 先勝ちになる
⁃ つまり、不不正な
App
に取られると
Redirect
URI
に渡した情報が
盗まれる
24
hIp://tools.ie=.org/html/rfc7636
25. Copyright
(C)
DeNA
Co.,Ltd.
All
Rights
Reserved.
Custom
URI
の中間者攻撃への対策
! Mobage
Connect
とそれを利利⽤用した
Native
SDK
でも対策が⼊入っていま
す
⁃ 但しセンシティブな話なので今⽇日はプロトコルの話はしません
! 今回話すのは、この中間者攻撃を成⽴立立させないようにする⽐比較的簡単
な対策についてお話します
25
26. Copyright
(C)
DeNA
Co.,Ltd.
All
Rights
Reserved.
Intent
URI
Scheme
(Chrome)
! Chrome
for
Android
の機能です
⁃ https://developer.chrome.com/multidevice/android/intents
! Android
の
Intent
Filter
の機能を詳細に指定して
Native
App
を起動
させる事が出来ます
26
intent:{origin}{/path}{?queries*}#Intent
{;package,action,category,component,scheme}
;end
intent:appId/callback?
access_token=xyz123&state=abcd1234
#Intent;package=jp.or.openid;
scheme=custom-‐scheme;end
URI
Template
URI
27. Copyright
(C)
DeNA
Co.,Ltd.
All
Rights
Reserved.
Intent
URI
Scheme
(Chrome)
! 上記のように
Original
URI
を
Intent
URI
Scheme
形式に書き直します
! さらに⾚赤字の部分の
package
を明確に指定します
⁃ この
package
は
AuthZ
Server
で事前に
Redirect
URI
のホワイトリ
スト登録時に⼀一緒に登録しておきます
! このようにする事で、不不正な
package
に対してそもそも
AuthZ
Response
を返さないようにする事が出来ます
27
custom-‐scheme:appId/callback?
access_token=xyz123&state=abcd1234
intent:appId/callback?
access_token=xyz123&state=abcd1234
#Intent;package=jp.or.openid;
scheme=custom-‐scheme;end
Original
URI
Intent
URI
28. Copyright
(C)
DeNA
Co.,Ltd.
All
Rights
Reserved.
諸注意
! この仕組みは前述の通り
Chrome
for
Android
独⾃自の物なので、iOS
の
Mobile
Safari
では適⽤用出来ない
⁃ Android/iOS
共に、もっと確かな別の仕組みの導⼊入が⼤大前提
28
29. Copyright
(C)
DeNA
Co.,Ltd.
All
Rights
Reserved.
ご清聴ありがとうございました
! 時間があれば質疑応答
29