Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
3分でわかるAzureでのService Principal
Toru Makabe
OpenID ConnectとAndroidアプリのログインサイクル
Masaru Kurahayashi
なぜOpenID Connectが必要となったのか、その歴史的背景
Tatsuo Kudo
これからのネイティブアプリにおけるOpenID Connectの活用
Masaru Kurahayashi
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
Tatsuo Kudo
Keycloak拡張入門
Hiroyuki Wada
OpenID Connect のビジネスチャンス
OpenID Foundation Japan
NGINXをBFF (Backend for Frontend)として利用した話
Hitachi, Ltd. OSS Solution Center.
1
of
41
Top clipped slide
なんとなくOAuth怖いって思ってるやつちょっと来い
Mar. 29, 2013
•
0 likes
45 likes
×
Be the first to like this
Show More
•
14,192 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Report
Ryo Ito
Follow
home
Advertisement
Advertisement
Advertisement
Recommended
オープンソースでExcelレポートプログラミング
Sho Okada
2.3K views
•
35 slides
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
Tatsuo Kudo
13.3K views
•
53 slides
認証の課題とID連携の実装 〜ハンズオン〜
Masaru Kurahayashi
8.7K views
•
170 slides
実装して理解するLINE LoginとOpenID Connect入門
Naohiro Fujie
21.1K views
•
28 slides
OpenID Connect入門
土岐 孝平
1.7K views
•
65 slides
今更聞けないOAuth2.0
Takahiro Sato
68.8K views
•
83 slides
More Related Content
Slideshows for you
(20)
3分でわかるAzureでのService Principal
Toru Makabe
•
29.2K views
OpenID ConnectとAndroidアプリのログインサイクル
Masaru Kurahayashi
•
14.7K views
なぜOpenID Connectが必要となったのか、その歴史的背景
Tatsuo Kudo
•
48.1K views
これからのネイティブアプリにおけるOpenID Connectの活用
Masaru Kurahayashi
•
25.3K views
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
Tatsuo Kudo
•
19.2K views
Keycloak拡張入門
Hiroyuki Wada
•
9.6K views
OpenID Connect のビジネスチャンス
OpenID Foundation Japan
•
6.4K views
NGINXをBFF (Backend for Frontend)として利用した話
Hitachi, Ltd. OSS Solution Center.
•
902 views
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
Takashi Yahata
•
3.6K views
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
Nov Matake
•
98.3K views
自動運転サービスの認証認可
Kotaro Hoshi
•
3.6K views
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
•
2.9K views
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
Naoki Nagazumi
•
22.4K views
AWS IoTにおけるデバイスへの認証情報のプロビジョニング
Amazon Web Services Japan
•
4.1K views
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
•
51.6K views
ぼくがAthenaで死ぬまで
Shinichi Takahashi
•
25.6K views
JWTを使った簡易SSOで徐々にシステムをリニューアルしている話
Kazuyoshi Tsuchiya
•
33.2K views
LINE Login総復習
Naohiro Fujie
•
776 views
シングルサインオンの歴史とSAMLへの道のり
Shinichi Tomita
•
36.8K views
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
都元ダイスケ Miyamoto
•
133.8K views
Similar to なんとなくOAuth怖いって思ってるやつちょっと来い
(20)
Introduction of OAuth 2.0 vol.1
Ryo Ito
•
1.3K views
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
Tatsuo Kudo
•
8.6K views
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
Tatsuo Kudo
•
3K views
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
Tatsuo Kudo
•
3.6K views
PFI Seminar 2012/02/24
Preferred Networks
•
1.6K views
Idcon11 implicit demo
Ryo Ito
•
4.1K views
Financial-grade API Hands-on with Authlete
Tatsuo Kudo
•
492 views
Anonymous OAuth Test
Ryo Ito
•
1.2K views
Opauthライブラリによるtwitter,facebook認証について
松本 雄貴
•
5.6K views
kitproライトニングトーク
Taichi Kimura
•
425 views
OAuth認証について
Yoshifumi Sato
•
36.7K views
OAuth認証再考からのOpenID Connect #devlove
Nov Matake
•
5.6K views
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Toru Yamaguchi
•
3.8K views
OAuth 2.0の概要とセキュリティ
Hiroshi Hayakawa
•
18.8K views
OCHaCafe#5 - 避けては通れない!認証・認可
オラクルエンジニア通信
•
3.2K views
OAuth Echo の Rails Gem
Toru Kawamura
•
2.7K views
OAuth 2.0による認可の流れ
Takeshi Mikami
•
233 views
React(TypeScript) + Go + Auth0 で実現する管理画面
KentaEndoh
•
1.1K views
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
decode2016
•
387 views
OAuth 2.0 と ライブラリ
Kenji Otsuka
•
217 views
Advertisement
More from Ryo Ito
(20)
安全な"○○でログイン"の作り方 @ NDS in Niigata #1
Ryo Ito
•
2.5K views
idcon mini vol3 CovertRedirect
Ryo Ito
•
1.7K views
OpenID-TechNight-11-LT-mixi
Ryo Ito
•
2.7K views
Idcon 17th ritou OAuth 2.0 CSRF Protection
Ryo Ito
•
4.6K views
YAPC::Tokyo 2013 ritou OpenID Connect
Ryo Ito
•
16.8K views
#idcon 15th ritou 2factor auth
Ryo Ito
•
2.6K views
Open id connect claims idcon mini vol1
Ryo Ito
•
2.4K views
OID to OIDC idcon mini vol1
Ryo Ito
•
5.6K views
Account Chooser idcon mini Vol.1
Ryo Ito
•
2.2K views
BackplaneProtocol超入門
Ryo Ito
•
2.1K views
UserManagedAccess_idcon13
Ryo Ito
•
1.8K views
WebIntents × SNS
Ryo Ito
•
1.2K views
OpenID_Connect_Spec_Demo
Ryo Ito
•
1.4K views
The Latest Specs of OpenID Connect at #idcon 9
Ryo Ito
•
1.7K views
OAuth 2.0 MAC Authentication
Ryo Ito
•
1.9K views
OAuth 2.0 Dance School #swj
Ryo Ito
•
873 views
Ritou idcon7
Ryo Ito
•
686 views
Summary of OAuth 2.0 draft 8 memo
Ryo Ito
•
677 views
0905xx Hybrid Memo
Ryo Ito
•
993 views
091009 Identity Conference #6 ritou
Ryo Ito
•
1.2K views
なんとなくOAuth怖いって思ってるやつちょっと来い
なんとなく OAuth怖いって 思ってる奴 ちょっと来い ~ OAuth 1.0編
2013/3 RITOU
読んでもらいたい人
よくわからんけどOAuthは怖い! よくわからんけどやっぱりOAuthは信 用できない! オレが難読化だ!
つのる想い
Twitterの騒ぎ、問題の本質が見えなく なってる気がする Twitterが対応した場所?違うよね Serverの対応は既存のClientへの影 響も考えた応急処置 Client Credentialの難読化?んなわけ ない 盛り上がるのは良いけど・・・
このスライドの内容
OAuthの前提 OAuth 1.0 実装のポイント
このスライドの目的
ぼくがかんがえるおーおーすのかんど ころを知ってもらいたい 特に、仕様がアレな部分をどう実装す るかを紹介したい まぁ、OAuth 1.0の時代はもう終わっ てるけどな
OAuth 1.0 (2007-2012) Obsoleted by
OAuth 2.0
OAuth1.0の前提 突っ込みどころはあるにしても、とりあ えずこんな前提で仕様は書かれてる
TLS(HTTPSなリクエスト)は信用できる HTTPなAPIもあるよね。署名つけよう 2007年とか2008年とかだからね
Client Credentialの扱い クライアントアプリケーションが信頼性の低い組織の管
理下に置かれるケースは少なくない。例えばクライアン トがデスクトップアプリケーションで、ソースコードや 実行形式のバイナリが公開されている場合、攻撃者が分 析のためにコピーをダウンロードし、クライアントクレ デンシャルを見付けてしまう可能性がある。 そういった場合、サーバーはクライアントのアイデン ティティを検証する際、クライアントクレデンシャルの みを使うべきではない。可能であれば、IP アドレスのよ うな他の要素も用いるべきである。 http://openid-foundation-japan.github.com/draft- hammer-oauth-10.html#client_cred_sec
OAuth1.0の前提 突っ込みどころはあるにしても、とりあ えずこんな前提で仕様は書かれてる
TLS(HTTPSなリクエスト)は信用できる HTTPなAPIもあるよね。署名つけよう モバイル/デスクトップアプリのClient Credentialは取得される可能性がある 難読化の話はもういらん
初めにユーザーが絡む
フローの話をしよう いわゆる3-legged OAuth, ユーザーの アクセス許可が入るフロー (2-leggedについては最後に)
OAuth 1.0のポイント
Access Token( / Secret)の管理 アクセス許可結果の受け渡し Client Credentialの管理
ちょっと余計なの ついてるけどフローは
まぁこんな感じ http://developer.yahoo.co. jp/other/oauth/flow.html
実装の ポイントを
後ろから 見ていく http://developer.yahoo.co. jp/other/oauth/flow.html
APIアクセスに必要な情報
2組のCredentialで署名する必要あり Access Token/Secret Consumer Key / Secret
http://developer.yahoo.co. jp/other/oauth/flow.html
Access Token /
Secretを 取得するためには これまたいろいろ必要 Request Token / Secet ユーザーの同意を求めるために必 要なやつ OAuth Verifier ユーザーが許可したあとに発行さ れるやつ
http://developer.yahoo.co. jp/other/oauth/flow.html
OAuth Verifierを 取得するためには
ユーザーが許可した後にServerから Clientへのリダイレクトなどによる受 け渡しが必要
OAuth Verifierを 正しく渡してもらうには
ClientからServerへの戻り先の指定が 必要 OAuth Callback Request Token取得時に指定 Serverは事前登録されているもの と一致するか検証
http://developer.yahoo.co. jp/other/oauth/flow.html
Request Tokenを取得する ためには
Client Credentialsが必要 Consumer Key / Secret
Request Tokenを取得する ためには
Client Credentialsが必要 Consumer Key / Secret Webアプリケーションでここが 守られていればALL Secure
Request Tokenを取得する ためには
Client Credentialsが必要 Consumer Key / Secret Webアプリケーションでここが 守られていればALL Secure モバイル/デスクトップアプリで は第3者に取得される可能性が どうなるか?
?
Client Credential + 渡されたパラ メータ を投げるとこ ろが信頼でき なくなる http://developer.yahoo.co. jp/other/oauth/flow.html
?
Client Credential + 渡されたパラ メータ を投げるとこ ろが信頼でき なくなる http://developer.yahoo.co. jp/other/oauth/flow.html
OAuth Callback の指定にはServer の検証が入る。 ここで不正な値を 指定されないよう に守るしかない。 http://developer.yahoo.co. jp/other/oauth/flow.html
3legged OAuthで重要なこと
Client Credentialが悪意のある誰かに 取得されても、OAuth Verifierが取得 されなければ、第3者にToken Credentialが渡ることを防げる
Server/Clientが やらないといけないこと ServerはOAuth
Verifierが悪意のあ る第3者に渡らないように実装 ClientはServerが提供する安全な方 法を利用する(しかない)
以上の観点から Twitterの実装を考える OAuth
Verifierが悪意のある第3者 に渡るケースがある 戻り先のURLが事前に指定してある 場合、Request Token取得時に任意 のURLを指定できる
Client Credentialを安全に 管理できないClient
第3者が Request Tokenを取得できる 戻り先のURLが事前に指定してある 場合、Request Token取得時に自分 のサーバーのURLを指定できる OAuth Verifier取得できる AccessToken/Secret取得できる Write権限でDM送れる
それに加えて
ユーザーのアクセス許可画面をスキッ プできるオプションがある 302でリダイレクトしてた iframe内で画面表示なしで OAuth Verifierを取得できた
Twitterの件のまとめ
アクセス許可画面の省略がキモ!ではない ノークリックを実現でとどめをさされた のは事実 しかし、画面表示をしたところでユー ザーが見逃したらやられるだろう感 Client Credentialの秘匿も本質じゃない 本質はやはりOAuth Callbackの扱い
2legged OAuth
Server-Clientの2者なので2legged アプリケーションに紐づくデータにア クセスする用途に利用されている Client Credentialのみで署名生成 モバイル/デスクトップアプリは… ┐(´~`;)┌
Server/Clientが やらないといけないこと
Serverは2legged OAuthの利用をWebア プリのみに制限する Client登録時に指定させる Webアプリかどうか 利用するAPIの指定でもいい Clientはモバイル/デスクトップアプリか ら直接2legged OAuthを使わない どうしてもな場合はバックエンドのサー バーを経由するなど(工夫が必要)
ここまでをまとめると OAuth 1.0の (というか2.0もなんだけど) 実装の良し悪しは ServerのClient管理にかかってる
ServerのClient管理の話
1プロジェクト、1Client Credentialは よくない Webアプリとネイティブアプリで Client Credential共有
ServerのClient管理の話
1プロジェクト、n Client Credentials の形式が良さそう Webアプリとネイティブアプリで Client Credentialを分ける それぞれに利用させるAPIを制限 プロジェクト内のユーザー識別子は 統一
ServerのClient管理の話
OAuth Callbackの適切な制限が必要 HTTPSなURLのフルパス(個人的に はパラメータも固定) 複数指定はできていいと思う
ServerのClient管理の話
気を付ける部分 リダイレクタ対策 パラメータ無視や前方一致 ドメイン単位の制限 カスタムURIスキーム 重複、先勝ちなどの特性 “oob”使ってユーザーに手動で渡し てもらうほうが良いかも
特にOAuthのServerを実装 する人たちは正しい知識を 得たうえで、 ユーザーとClientが安全にリ ソースアクセスできるよう な手段を提供するように努 力しましょう
今回はこれぐらいにしとく
OAuth 2.0編もそのうち作る
Advertisement