whats wrong oauth_authn
Post on 24-May-2015
742 Views
Preview:
TRANSCRIPT
ここがダメだよOAuth認証@nov
大人の事情により
一部割愛および
置換されています
GREE Power Lunch 2013.03
@nov - Nov Matake
OpenID Foundation Japan Evangelist
Idcon Organizer
ID厨
OAuth.jp
OAuthおにーさん
Rubyist
GREE Power Lunch 2013.03
外部IDを受け入れるセキュリティ上の利点・欠点
GREE Power Lunch 2013.03
Passwords Leak
GREE Power Lunch 2013.03
Twitter、25万人のパスワードを含む個人情報漏えいの可能性(ITMedia, 2013.02.02)
使い回しパスワードは特に注意、米Yahoo!でアカウント情報流出 (@IT, 2012.07.13)
LinkedIn、侵入および「一部」ユーザーのパスワード漏洩を認める (TechCrunch, 2012.06.07)
Facebookのパスワードが1万件以上流出の恐れ、真偽は未確認 (ITPro, 2011.10.20)
GREE Power Lunch 2013.03
池田信夫、自らのメールアカウントを乗っ取られ今日も見事な醜態を晒す
GREE Power Lunch 2013.03
GREE Power Lunch 2013.03
GREE Power Lunch 2013.03
いやー、馬鹿って本当に面白いですね。
GREE Power Lunch 2013.03
Same password onTwitter and Facebook?
GREE Power Lunch 2013.03
How many sitesare you using?
GREE Power Lunch 2013.03
1 LeakAll Hacked
GREE Power Lunch 2013.03
リスクは分散すべきものリソースは集中すべきもの
GREE Power Lunch 2013.03
パスワードは使い分けるものできないならID連携
GREE Power Lunch 2013.03
100 sites 100 different password
100 sites 1 password + 99 OpenID
GREE Power Lunch 2013.03
GREE Power Lunch 2013.03
GREE Power Lunch 2013.03
OAuth認証
「アクセス権限付与 + UserIDを返すAPI」
アクセス権限付与のプロトコル (= OAuth) は標準化
UserID取得APIは各API Providerごとにバラバラ
GREE Power Lunch 2013.03
OAuth使って認証するためのRFCなど無い。
GREE Power Lunch 2013.03
単なる OAuth 2.0 を認証に使うと、車が通れるほどのどでかいセキュリティー・ホールができる
GREE Power Lunch 2013.03
Demo
Your Server
GET /me
User Info
GET /me
User Info
:Different User Data
Token ReplaceYour Server
GREE Power Lunch 2013.03
OAuthの仕様を理解してFB APIの仕様も理解して
ドキュメント通りに実装したらアカウント乗っ取られる。
大人の事情により割愛
GET /me
User Info
:Different User Data
Token Replace
Weak Point
GREE Power Lunch 2013.03
OAuth + 認証どうすればセキュアに...?
それ、OpenID Connect
でできるよ。
♥OpenID Connect
~ OpenID based on OAuth 2.0 ~
ỴỶἙὅἘỵἘỵޖỊˌɦỉờỉử੩̓
ͻ ㄆド䜢ཷ䛡䛯䛾䛛 ㄡ䛜
ͻ ㄆド䜢ཷ䛡䛯䛾䛛 䛹䛣䛷
ͻ ㄆド䜢ཷ䛡䛯䛾䛛 䛔䛴
ͻ ㄆド䜢ཷ䛡䛯䛾䛛 䛹䛾䜘䛖䛻
ͻ ᒓᛶ䜢ᥦ౪䛧䛶䛟䜜䜛䛛 䛹䛾
ͻ ᥦ౪䛧䛶䛟䜜䜛䛛 䛺䛬
12
Access Token + ID TokenRelying Party OpenID Provider
Initiate
Request Authorization
Authenticate & Authorize
Authorization Grant
Authorization Grant
Access Token + ID Token
End User
ID Token
• JWT token representing logged-in session
• Claims:
• iss – Issuer
• sub – Identifier for user
• aud – Audience for ID Token
• iat, exp - issued at & expiry
JSON Web Token
• JSON + Signature (+ Encryption)
•XML Signature for JSON
誰が (issuer)
誰を (subject)
誰のために (audience)
認証したのか
Your Server
Signed using FB private key
Verified usingFB public key
最後に
****よりFB / Googleの方がセキュアだし外部IDは受け入れた方がよい。
「1password使えや」とかユーザーに言えるの空気読めない楽◯社長くらい
ただし「OAuth認証」は仕様通り(とDeveloperが思ってる通り)
に実装すると穴ができるので注意。
たぶん既に穴何カ所かある気がする...
****がOpenID Connect Providerになるのは大変そうだけど
ID Tokenだけ発行するならあり。
Backend API Call無いと認証できないとかけっこうつらくない?
slideshare.net/matake
github.com/nov
twitter.com/nov
top related