whats wrong oauth_authn

Post on 24-May-2015

742 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

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