SlideShare une entreprise Scribd logo
1  sur  41
OAuth 2.0 Dance School

                @ritou
 SocialWeb Conference vol.6 ~OAuth Night~
自己紹介
• 伊東 諒(@ritou)
• ヤフー株式会社 所属 2006~
  – Login
  – ログイン履歴/ログインシール/ログインアラート
  – OpenID/OAuth
• http://d.hatena.ne.jp/ritou



                                2
本日のGOAL
• OAuth 1.0仕様の難しさを整理しよう
• 最新仕様 OAuth 2.0を知ろう
• OAuthの今後を少し考えてみよう




                          3
OAuth 1.0の課題
• Signature/Authorization Header
  – 仕様が複雑/ライブラリ必須
• User Experience / Profile(Flow)
  – 実際使われてるのはWebアプリのみ
  – デスクトップアプリにシークレットって置いて良いの?
  – Facebookって昔から使いやすいよね
• Performance / Scale
  – トークンシークレットって意味あるの?
  – 署名の確認に、毎回クライアントクレデンシャル(2個)と
    トークンクレデンシャル(2個)の両方が必要

                                    4
OAuth 1.0の課題
• Signature/Authorization Header
  – 仕様が複雑/ライブラリ必須
• User Experience / Profile(Flow)
  – 実際使われてるのはWebアプリのみ
  – デスクトップアプリにシークレットって置いて良いの?
  – Facebookって昔から使いやすいよね
• Performance / Scale
  – トークンシークレットって意味あるの?
  – 署名の確認に、毎回クライアントクレデンシャル(2個)と
    トークンクレデンシャル(2個)の両方が必要

                                    5
OAuth 1.0の課題
• Signature/Authorization Header
  – 仕様が複雑/ライブラリ必須
• User Experience / Profile(Flow)
  – 実際使われてるのはWebアプリのみ
  – デスクトップアプリにシークレットって置いて良いの?
  – Facebookって昔から使いやすいよね
• Performance / Scale
  – トークンシークレットって意味あるの?
  – 署名の確認に、毎回クライアントクレデンシャル(2個)と
    トークンクレデンシャル(2個)の両方が必要

                                    6
OAuth WRAP登場
• HTTPS必須で署名不要
• トークンのみでリソースアクセス
• 新たなフロー(Profile)
• 対応Provider
 – FriendFeed
 – Google

 これをベースにして作られてるのが。。。
                       7
The OAuth 2.0 Protocol
     現在、IETFにて仕様策定中(Draft 10)
 http://tools.ietf.org/html/draft-ietf-oauth-v2-10

    9月前半で次のDraft(11)が出るっぽい
      2010年冬-2011年春? 仕様Fix


                                                     8
OAuthの歴史
• 2007/12 OAuth Core 1.0

• 2009/6    OAuth Core 1.0 Revision A
• 2009/7    Yahoo! JAPANもSPに!
• 2009/12 OAuth WRAP

• 2010/4 OAuth 1.0 RFC 5849 = Revision A
• 2010-2011 OAuth 2.0
                                           9
登場人物


 End User      Authorization
                  Server




Client        Resource Server

                                10
Accessing a Protected Resource

• 必要なのはAccess Tokenのみ
 – Signature不要
 – Web BrowserとHTTP Cookieのような関係
• 指定方法
 – Authorization Header
 – URI Query Parameter
 – Form-Encoded Body Parameter


                                   11
Client Type
Client TypeによりAccess Tokenの取得方法が異なる
• Web Servers
  – Webサーバ上で動作。サーバ間通信が可能
• User-Agents
  – JSなど、User-Agent上で動作。Secret不要。
• Native Applications
  – iPhone/Android App
  – Desktop App
• Autonomous Clients
                                    12
Profiles(フロー)
• OAuth 2.0の2大フロー
 – Web Server Profile
 → Facebook Graph API
 – User-Agent Profile
 →Twitter @Anywhere




                        13
Web Server Profile


End User           Client         AuthZ           Resource
                                  Server           Server
    1. Clientにサービス要求
    2. AuthZ Serverにリダイレクト

                                      3. 認証/認可処理
    4. Clientにリダイレクト

                       5. Access Token取得

                       6. Protect Resourceにアクセス

                       7. Access Token更新
                                                        14
Facebook Graph API デモ
• https://r-weblife.sakura.ne.jp/oauth2_sample_fb/




                                                     15
1. Clientにサービス要求
    • Clientにサービスを要
      求する




End User   Client   AServer   RServer




                                        16
2. AuthZ Serverにリダイレクト
    • Clientは AuthZ Serverの              • パラメータ
      End-user Authorization              – response_type
      Endpointにユーザーを送                          • “code” : Web Server
      る                                         Profile

                                          –   client_id
                                          –   redirect_uri
End User    Client   AServer   RServer
                                          –   scope (option)
                                          –   state (option)




                                                                       17
3. 認証/認可処理
    • End Userの本人確認
    • Clientにデータを渡すこと
      に対する同意取得



End User   Client   AServer   RServer




                                        18
4. Clientにリダイレクト
    • AuthZ Server は                    • パラメータ
      Authrozation Codeをパ
      ラメータに付加し、                          – code
      redirect_uriにユーザーを                 – state (option)
      送る

End User   Client   AServer   RServer




                                                            19
5. Access Token取得
    • Clientは AuthZ Serverの             • リクエストパラメータ
      Token Endpointに直接通                 – grant_type
      信を送り、Access Token
                                              • “authorization_code”
      を要求
    • TLS必須!
                                         –   client_id
                                         –   client_secret
End User   Client   AServer   RServer    –   code
                                         –   redirect_uri



                                                                  20
5. Access Token取得
    • AuthZ ServerはClientに              • JSON フォーマット
      Access Token, Refresh             • レスポンスパラメータ
      Tokenを返す
                                         – access_token
    • Access Tokenの有効期
      限は短く、Refresh Token                 – expires_in
      を用いて更新する                             (option)
End User   Client   AServer   RServer    – refresh_token
                                           (option)
                                         – scope (option)



                                                            21
6. Protect Resourceにアクセス
    • ClientはAccess Tokenを              • リクエストパラメータ
      用いてリソースアクセスを                       – token
      行う




End User   Client   AServer   RServer




                                                       22
7. Access Token更新
    • Clientは AuthZ Serverの             • リクエストパラメータ
      Token Endpointに直接通                 – grant_type
      信を送り、Access Token
                                           • “refresh_token”
      の更新を要求
                                         – client_id
                                         – client_secret
End User   Client   AServer   RServer    – refresh_token




                                                               23
7. Access Token更新
    • AuthZ ServerはClientに              • JSON フォーマット
      新しいAccess Tokenを返                 • レスポンスパラメータ
      す
                                         – access_token
                                         – expires_in
                                           (option)
End User   Client   AServer   RServer    – scope (option)




                                                            24
User-Agent Profile


End User            Client         AuthZ           Resource
                                   Server           Server
    1. Clientサービス要求
    2. AuthZ Serverにリダイレクト

                                       3. 認証/認可処理
    4. Clientにリダイレクト

    5. Access Token取得

                        6. Protect Resourceにアクセス


                                                         25
Twitter @Anywhere デモ
• https://r-weblife.sakura.ne.jp/oauth2_sample_anywhere/




                                                       26
1. Clientにサービス要求
   • Clientにサービスを要
     求する




End User   Client   AuthZ    Resource
                    Server    Server




                                        27
2. AuthZ Serverにリダイレクト
   • Clientは AuthZ Serverの              • パラメータ
     End-user Authorization              – response_type
     Endpointにユーザーを送                          • “token” : User-Agent
     る                                          Profile

                                         –   client_id
                                         –   redirect_uri
End User   Client   AuthZ
                    Server
                             Resource
                              Server
                                         –   scope (option)
                                         –   state (option)




                                                                       28
3. 認証/認可処理
   • End Userの本人確認
   • Clientにデータを渡すこと
     に対する同意取得



End User   Client   AuthZ    Resource
                    Server    Server




                                        29
4. Clientにリダイレクト
   • AuthZ Serverはフラグメン                 • パラメータ
     ト識別子にAccess Token                   – access_token
     の値を付加してユーザーを
     redirect_uriに送る                     – expires_in
                                           (option)
                                         – scope (option)
End User   Client   AuthZ
                    Server
                             Resource
                              Server     – state (option)




                                                            30
5. Access Token取得
   • JavaScriptなどでフラグメ
     ント識別子からAccess
     Tokenの値を取得




End User   Client   AuthZ    Resource
                    Server    Server




                                        31
6. Protect Resourceにアクセス
   • ClientはAccess Tokenを               • リクエストパラメータ
     用いてリソースアクセスを                        – token
     行う




End User   Client   AuthZ    Resource
                    Server    Server




                                                       32
Native Application
  ガイドラインのようなものが記載されている
• 外部ブラウザを立ち上げる
 – カスタムURIスキームなどを用いてシームレスに
• 内臓ブラウザを利用
 – セキュリティに難あり?
• ユーザーのID/PWを利用(非推奨)
 – SignatureなしのxAuth


                             33
OAuth 2.0 メリット
• シンプルな仕様
 – 1.0aにあったRequest Tokenがなくなった
 – Signatureに悩まされなくなる
 – User-Agent上で動作するClientの実装が可能
   になった
• 他のシステム/プラットフォームと連携可能
 – 2legged OAuth
 – SAML

                                  34
OAuth 2.0 で気になること
• URLが長くなる?(→JPのモバイルに影響)
 – 1.0aのRequestTokenはURL短縮という意味で
   はよかったのかも
• Core部分以外の仕様があいまい
 – Scope, User Identifier…
• いまさらだけど、本当に署名なくて大丈夫?

           今後の仕様に期待!
                                   35
OpenIDとOAuthの関係
• OpenID Auth 2.0 vs OAuth 1.0
  – OAuth 1.0の方がSexy?
  – Hybridで(むりやり?)共存可能
    • 両方の機能持っていないといけない
    • モバイルフローに課題
• OpenID v.Next vs OAuth 2.0
  – OAuth 2.0ベース or 互換性をもった形になる!


                                 36
OAuthの未来
• 全てのリソースアクセスをOAuthが担う
 – ソーシャル系からPIM、決済、POP/IMAPまで
• 他のプロトコルやプラットフォームとの連携
 – SAML,OpenID,OpenSocial…
• 端末に縛られない!
 – Web/Mobileアプリからデジタル家電まで対応
   できるClient Profile


                               37
そんな未来を目指すために
• OAuthでシングルサインオン
• フィッシング対策
• 認可範囲など、細かい考え方

 日本とUSはいろいろ考えが違うので、議論しながら
 日本独自の拡張をみんなで考えていきたい
 http://oauth.jp/



                        38
これからもOAuthを盛り上げて行きましょう!




                          39
最後にちょっと告知
• Yahoo! JAPANはOAuthのSP機能につい
  て、改修を行いました
 – SSO機能の利便性向上
   • 「パスワード入力の省略」機能
 – ユーザーの利便性向上
   • 「次回から同意省略」機能
 – クライアントアプリ対応(パートナー企業様限定)
   • カスタムURIスキーム対応
• あとでTech Blogなどで紹介します!
                               40
御静聴ありがとうございました




                 41

Contenu connexe

En vedette

Diario Resumen 20151023
Diario Resumen 20151023Diario Resumen 20151023
Diario Resumen 20151023Diario Resumen
 
Dragun v eafo_melanoma forum_2016
Dragun v eafo_melanoma forum_2016Dragun v eafo_melanoma forum_2016
Dragun v eafo_melanoma forum_2016EAFO2014
 
Ontologies and Linked Open Data in the LifeWatch Greece Research Infrastructure
Ontologies and Linked Open Data in theLifeWatch Greece Research InfrastructureOntologies and Linked Open Data in theLifeWatch Greece Research Infrastructure
Ontologies and Linked Open Data in the LifeWatch Greece Research Infrastructureymark_em
 
BD newsletter February 2016 (1)
BD newsletter February 2016 (1)BD newsletter February 2016 (1)
BD newsletter February 2016 (1)Kellyann Sykora
 
Novikov v eafo_melanoma forum_2016
Novikov v eafo_melanoma forum_2016Novikov v eafo_melanoma forum_2016
Novikov v eafo_melanoma forum_2016EAFO2014
 
Tim Wright (Pension CV)
Tim Wright (Pension CV)Tim Wright (Pension CV)
Tim Wright (Pension CV)Tim Wright
 
OAuth 2.0 MAC Authentication
OAuth 2.0 MAC AuthenticationOAuth 2.0 MAC Authentication
OAuth 2.0 MAC AuthenticationRyo Ito
 
DIREITO À SAÚDE NO BRASIL: Uma análise à luz da Constituição Federal de 1988
DIREITO À SAÚDE NO BRASIL: Uma análise à luz da Constituição Federal de 1988DIREITO À SAÚDE NO BRASIL: Uma análise à luz da Constituição Federal de 1988
DIREITO À SAÚDE NO BRASIL: Uma análise à luz da Constituição Federal de 1988Kleiton Barbosa
 
Efectos biologicos de las radiaciones ionizantes
Efectos biologicos de las radiaciones ionizantesEfectos biologicos de las radiaciones ionizantes
Efectos biologicos de las radiaciones ionizantesEduardo Medina Gironzini
 

En vedette (14)

Diario Resumen 20151023
Diario Resumen 20151023Diario Resumen 20151023
Diario Resumen 20151023
 
RESTORE
RESTORERESTORE
RESTORE
 
Dragun v eafo_melanoma forum_2016
Dragun v eafo_melanoma forum_2016Dragun v eafo_melanoma forum_2016
Dragun v eafo_melanoma forum_2016
 
Ontologies and Linked Open Data in the LifeWatch Greece Research Infrastructure
Ontologies and Linked Open Data in theLifeWatch Greece Research InfrastructureOntologies and Linked Open Data in theLifeWatch Greece Research Infrastructure
Ontologies and Linked Open Data in the LifeWatch Greece Research Infrastructure
 
BD newsletter February 2016 (1)
BD newsletter February 2016 (1)BD newsletter February 2016 (1)
BD newsletter February 2016 (1)
 
BD newsletter May 2016
BD newsletter May 2016BD newsletter May 2016
BD newsletter May 2016
 
Novikov v eafo_melanoma forum_2016
Novikov v eafo_melanoma forum_2016Novikov v eafo_melanoma forum_2016
Novikov v eafo_melanoma forum_2016
 
Tim Wright (Pension CV)
Tim Wright (Pension CV)Tim Wright (Pension CV)
Tim Wright (Pension CV)
 
OAuth 2.0 MAC Authentication
OAuth 2.0 MAC AuthenticationOAuth 2.0 MAC Authentication
OAuth 2.0 MAC Authentication
 
Nba
NbaNba
Nba
 
Curso de lectura elemental
Curso de lectura elementalCurso de lectura elemental
Curso de lectura elemental
 
O Cortiço - Aluísio Azevedo
O Cortiço - Aluísio AzevedoO Cortiço - Aluísio Azevedo
O Cortiço - Aluísio Azevedo
 
DIREITO À SAÚDE NO BRASIL: Uma análise à luz da Constituição Federal de 1988
DIREITO À SAÚDE NO BRASIL: Uma análise à luz da Constituição Federal de 1988DIREITO À SAÚDE NO BRASIL: Uma análise à luz da Constituição Federal de 1988
DIREITO À SAÚDE NO BRASIL: Uma análise à luz da Constituição Federal de 1988
 
Efectos biologicos de las radiaciones ionizantes
Efectos biologicos de las radiaciones ionizantesEfectos biologicos de las radiaciones ionizantes
Efectos biologicos de las radiaciones ionizantes
 

Plus de Ryo Ito

安全な"○○でログイン"の作り方 @ NDS in Niigata #1
安全な"○○でログイン"の作り方 @ NDS in Niigata #1安全な"○○でログイン"の作り方 @ NDS in Niigata #1
安全な"○○でログイン"の作り方 @ NDS in Niigata #1Ryo Ito
 
idcon mini vol3 CovertRedirect
idcon mini vol3 CovertRedirectidcon mini vol3 CovertRedirect
idcon mini vol3 CovertRedirectRyo Ito
 
OpenID-TechNight-11-LT-mixi
OpenID-TechNight-11-LT-mixiOpenID-TechNight-11-LT-mixi
OpenID-TechNight-11-LT-mixiRyo Ito
 
Idcon 17th ritou OAuth 2.0 CSRF Protection
Idcon 17th ritou OAuth 2.0 CSRF ProtectionIdcon 17th ritou OAuth 2.0 CSRF Protection
Idcon 17th ritou OAuth 2.0 CSRF ProtectionRyo Ito
 
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectYAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectRyo Ito
 
なんとなくOAuth怖いって思ってるやつちょっと来い
なんとなくOAuth怖いって思ってるやつちょっと来いなんとなくOAuth怖いって思ってるやつちょっと来い
なんとなくOAuth怖いって思ってるやつちょっと来いRyo Ito
 
#idcon 15th ritou 2factor auth
#idcon 15th ritou 2factor auth#idcon 15th ritou 2factor auth
#idcon 15th ritou 2factor authRyo Ito
 
Open id connect claims idcon mini vol1
Open id connect claims idcon mini vol1Open id connect claims idcon mini vol1
Open id connect claims idcon mini vol1Ryo Ito
 
OID to OIDC idcon mini vol1
OID to OIDC idcon mini vol1OID to OIDC idcon mini vol1
OID to OIDC idcon mini vol1Ryo Ito
 
Account Chooser idcon mini Vol.1
Account Chooser idcon mini Vol.1Account Chooser idcon mini Vol.1
Account Chooser idcon mini Vol.1Ryo Ito
 
BackplaneProtocol超入門
BackplaneProtocol超入門BackplaneProtocol超入門
BackplaneProtocol超入門Ryo Ito
 
UserManagedAccess_idcon13
UserManagedAccess_idcon13UserManagedAccess_idcon13
UserManagedAccess_idcon13Ryo Ito
 
Idcon11 implicit demo
Idcon11 implicit demoIdcon11 implicit demo
Idcon11 implicit demoRyo Ito
 
OpenID_Connect_Spec_Demo
OpenID_Connect_Spec_DemoOpenID_Connect_Spec_Demo
OpenID_Connect_Spec_DemoRyo Ito
 
The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9Ryo Ito
 
Ritou idcon7
Ritou idcon7Ritou idcon7
Ritou idcon7Ryo Ito
 
Summary of OAuth 2.0 draft 8 memo
Summary of OAuth 2.0 draft 8 memoSummary of OAuth 2.0 draft 8 memo
Summary of OAuth 2.0 draft 8 memoRyo Ito
 
Introduction of OAuth 2.0 vol.1
Introduction of OAuth 2.0 vol.1Introduction of OAuth 2.0 vol.1
Introduction of OAuth 2.0 vol.1Ryo Ito
 
0905xx Hybrid Memo
0905xx Hybrid Memo0905xx Hybrid Memo
0905xx Hybrid MemoRyo Ito
 
Anonymous OAuth Test
Anonymous OAuth TestAnonymous OAuth Test
Anonymous OAuth TestRyo Ito
 

Plus de Ryo Ito (20)

安全な"○○でログイン"の作り方 @ NDS in Niigata #1
安全な"○○でログイン"の作り方 @ NDS in Niigata #1安全な"○○でログイン"の作り方 @ NDS in Niigata #1
安全な"○○でログイン"の作り方 @ NDS in Niigata #1
 
idcon mini vol3 CovertRedirect
idcon mini vol3 CovertRedirectidcon mini vol3 CovertRedirect
idcon mini vol3 CovertRedirect
 
OpenID-TechNight-11-LT-mixi
OpenID-TechNight-11-LT-mixiOpenID-TechNight-11-LT-mixi
OpenID-TechNight-11-LT-mixi
 
Idcon 17th ritou OAuth 2.0 CSRF Protection
Idcon 17th ritou OAuth 2.0 CSRF ProtectionIdcon 17th ritou OAuth 2.0 CSRF Protection
Idcon 17th ritou OAuth 2.0 CSRF Protection
 
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID ConnectYAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
 
なんとなくOAuth怖いって思ってるやつちょっと来い
なんとなくOAuth怖いって思ってるやつちょっと来いなんとなくOAuth怖いって思ってるやつちょっと来い
なんとなくOAuth怖いって思ってるやつちょっと来い
 
#idcon 15th ritou 2factor auth
#idcon 15th ritou 2factor auth#idcon 15th ritou 2factor auth
#idcon 15th ritou 2factor auth
 
Open id connect claims idcon mini vol1
Open id connect claims idcon mini vol1Open id connect claims idcon mini vol1
Open id connect claims idcon mini vol1
 
OID to OIDC idcon mini vol1
OID to OIDC idcon mini vol1OID to OIDC idcon mini vol1
OID to OIDC idcon mini vol1
 
Account Chooser idcon mini Vol.1
Account Chooser idcon mini Vol.1Account Chooser idcon mini Vol.1
Account Chooser idcon mini Vol.1
 
BackplaneProtocol超入門
BackplaneProtocol超入門BackplaneProtocol超入門
BackplaneProtocol超入門
 
UserManagedAccess_idcon13
UserManagedAccess_idcon13UserManagedAccess_idcon13
UserManagedAccess_idcon13
 
Idcon11 implicit demo
Idcon11 implicit demoIdcon11 implicit demo
Idcon11 implicit demo
 
OpenID_Connect_Spec_Demo
OpenID_Connect_Spec_DemoOpenID_Connect_Spec_Demo
OpenID_Connect_Spec_Demo
 
The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9
 
Ritou idcon7
Ritou idcon7Ritou idcon7
Ritou idcon7
 
Summary of OAuth 2.0 draft 8 memo
Summary of OAuth 2.0 draft 8 memoSummary of OAuth 2.0 draft 8 memo
Summary of OAuth 2.0 draft 8 memo
 
Introduction of OAuth 2.0 vol.1
Introduction of OAuth 2.0 vol.1Introduction of OAuth 2.0 vol.1
Introduction of OAuth 2.0 vol.1
 
0905xx Hybrid Memo
0905xx Hybrid Memo0905xx Hybrid Memo
0905xx Hybrid Memo
 
Anonymous OAuth Test
Anonymous OAuth TestAnonymous OAuth Test
Anonymous OAuth Test
 

OAuth 2.0 Dance School #swj

  • 1. OAuth 2.0 Dance School @ritou SocialWeb Conference vol.6 ~OAuth Night~
  • 2. 自己紹介 • 伊東 諒(@ritou) • ヤフー株式会社 所属 2006~ – Login – ログイン履歴/ログインシール/ログインアラート – OpenID/OAuth • http://d.hatena.ne.jp/ritou 2
  • 3. 本日のGOAL • OAuth 1.0仕様の難しさを整理しよう • 最新仕様 OAuth 2.0を知ろう • OAuthの今後を少し考えてみよう 3
  • 4. OAuth 1.0の課題 • Signature/Authorization Header – 仕様が複雑/ライブラリ必須 • User Experience / Profile(Flow) – 実際使われてるのはWebアプリのみ – デスクトップアプリにシークレットって置いて良いの? – Facebookって昔から使いやすいよね • Performance / Scale – トークンシークレットって意味あるの? – 署名の確認に、毎回クライアントクレデンシャル(2個)と トークンクレデンシャル(2個)の両方が必要 4
  • 5. OAuth 1.0の課題 • Signature/Authorization Header – 仕様が複雑/ライブラリ必須 • User Experience / Profile(Flow) – 実際使われてるのはWebアプリのみ – デスクトップアプリにシークレットって置いて良いの? – Facebookって昔から使いやすいよね • Performance / Scale – トークンシークレットって意味あるの? – 署名の確認に、毎回クライアントクレデンシャル(2個)と トークンクレデンシャル(2個)の両方が必要 5
  • 6. OAuth 1.0の課題 • Signature/Authorization Header – 仕様が複雑/ライブラリ必須 • User Experience / Profile(Flow) – 実際使われてるのはWebアプリのみ – デスクトップアプリにシークレットって置いて良いの? – Facebookって昔から使いやすいよね • Performance / Scale – トークンシークレットって意味あるの? – 署名の確認に、毎回クライアントクレデンシャル(2個)と トークンクレデンシャル(2個)の両方が必要 6
  • 7. OAuth WRAP登場 • HTTPS必須で署名不要 • トークンのみでリソースアクセス • 新たなフロー(Profile) • 対応Provider – FriendFeed – Google これをベースにして作られてるのが。。。 7
  • 8. The OAuth 2.0 Protocol 現在、IETFにて仕様策定中(Draft 10) http://tools.ietf.org/html/draft-ietf-oauth-v2-10 9月前半で次のDraft(11)が出るっぽい 2010年冬-2011年春? 仕様Fix 8
  • 9. OAuthの歴史 • 2007/12 OAuth Core 1.0 • 2009/6 OAuth Core 1.0 Revision A • 2009/7 Yahoo! JAPANもSPに! • 2009/12 OAuth WRAP • 2010/4 OAuth 1.0 RFC 5849 = Revision A • 2010-2011 OAuth 2.0 9
  • 10. 登場人物 End User Authorization Server Client Resource Server 10
  • 11. Accessing a Protected Resource • 必要なのはAccess Tokenのみ – Signature不要 – Web BrowserとHTTP Cookieのような関係 • 指定方法 – Authorization Header – URI Query Parameter – Form-Encoded Body Parameter 11
  • 12. Client Type Client TypeによりAccess Tokenの取得方法が異なる • Web Servers – Webサーバ上で動作。サーバ間通信が可能 • User-Agents – JSなど、User-Agent上で動作。Secret不要。 • Native Applications – iPhone/Android App – Desktop App • Autonomous Clients 12
  • 13. Profiles(フロー) • OAuth 2.0の2大フロー – Web Server Profile → Facebook Graph API – User-Agent Profile →Twitter @Anywhere 13
  • 14. Web Server Profile End User Client AuthZ Resource Server Server 1. Clientにサービス要求 2. AuthZ Serverにリダイレクト 3. 認証/認可処理 4. Clientにリダイレクト 5. Access Token取得 6. Protect Resourceにアクセス 7. Access Token更新 14
  • 15. Facebook Graph API デモ • https://r-weblife.sakura.ne.jp/oauth2_sample_fb/ 15
  • 16. 1. Clientにサービス要求 • Clientにサービスを要 求する End User Client AServer RServer 16
  • 17. 2. AuthZ Serverにリダイレクト • Clientは AuthZ Serverの • パラメータ End-user Authorization – response_type Endpointにユーザーを送 • “code” : Web Server る Profile – client_id – redirect_uri End User Client AServer RServer – scope (option) – state (option) 17
  • 18. 3. 認証/認可処理 • End Userの本人確認 • Clientにデータを渡すこと に対する同意取得 End User Client AServer RServer 18
  • 19. 4. Clientにリダイレクト • AuthZ Server は • パラメータ Authrozation Codeをパ ラメータに付加し、 – code redirect_uriにユーザーを – state (option) 送る End User Client AServer RServer 19
  • 20. 5. Access Token取得 • Clientは AuthZ Serverの • リクエストパラメータ Token Endpointに直接通 – grant_type 信を送り、Access Token • “authorization_code” を要求 • TLS必須! – client_id – client_secret End User Client AServer RServer – code – redirect_uri 20
  • 21. 5. Access Token取得 • AuthZ ServerはClientに • JSON フォーマット Access Token, Refresh • レスポンスパラメータ Tokenを返す – access_token • Access Tokenの有効期 限は短く、Refresh Token – expires_in を用いて更新する (option) End User Client AServer RServer – refresh_token (option) – scope (option) 21
  • 22. 6. Protect Resourceにアクセス • ClientはAccess Tokenを • リクエストパラメータ 用いてリソースアクセスを – token 行う End User Client AServer RServer 22
  • 23. 7. Access Token更新 • Clientは AuthZ Serverの • リクエストパラメータ Token Endpointに直接通 – grant_type 信を送り、Access Token • “refresh_token” の更新を要求 – client_id – client_secret End User Client AServer RServer – refresh_token 23
  • 24. 7. Access Token更新 • AuthZ ServerはClientに • JSON フォーマット 新しいAccess Tokenを返 • レスポンスパラメータ す – access_token – expires_in (option) End User Client AServer RServer – scope (option) 24
  • 25. User-Agent Profile End User Client AuthZ Resource Server Server 1. Clientサービス要求 2. AuthZ Serverにリダイレクト 3. 認証/認可処理 4. Clientにリダイレクト 5. Access Token取得 6. Protect Resourceにアクセス 25
  • 26. Twitter @Anywhere デモ • https://r-weblife.sakura.ne.jp/oauth2_sample_anywhere/ 26
  • 27. 1. Clientにサービス要求 • Clientにサービスを要 求する End User Client AuthZ Resource Server Server 27
  • 28. 2. AuthZ Serverにリダイレクト • Clientは AuthZ Serverの • パラメータ End-user Authorization – response_type Endpointにユーザーを送 • “token” : User-Agent る Profile – client_id – redirect_uri End User Client AuthZ Server Resource Server – scope (option) – state (option) 28
  • 29. 3. 認証/認可処理 • End Userの本人確認 • Clientにデータを渡すこと に対する同意取得 End User Client AuthZ Resource Server Server 29
  • 30. 4. Clientにリダイレクト • AuthZ Serverはフラグメン • パラメータ ト識別子にAccess Token – access_token の値を付加してユーザーを redirect_uriに送る – expires_in (option) – scope (option) End User Client AuthZ Server Resource Server – state (option) 30
  • 31. 5. Access Token取得 • JavaScriptなどでフラグメ ント識別子からAccess Tokenの値を取得 End User Client AuthZ Resource Server Server 31
  • 32. 6. Protect Resourceにアクセス • ClientはAccess Tokenを • リクエストパラメータ 用いてリソースアクセスを – token 行う End User Client AuthZ Resource Server Server 32
  • 33. Native Application ガイドラインのようなものが記載されている • 外部ブラウザを立ち上げる – カスタムURIスキームなどを用いてシームレスに • 内臓ブラウザを利用 – セキュリティに難あり? • ユーザーのID/PWを利用(非推奨) – SignatureなしのxAuth 33
  • 34. OAuth 2.0 メリット • シンプルな仕様 – 1.0aにあったRequest Tokenがなくなった – Signatureに悩まされなくなる – User-Agent上で動作するClientの実装が可能 になった • 他のシステム/プラットフォームと連携可能 – 2legged OAuth – SAML 34
  • 35. OAuth 2.0 で気になること • URLが長くなる?(→JPのモバイルに影響) – 1.0aのRequestTokenはURL短縮という意味で はよかったのかも • Core部分以外の仕様があいまい – Scope, User Identifier… • いまさらだけど、本当に署名なくて大丈夫? 今後の仕様に期待! 35
  • 36. OpenIDとOAuthの関係 • OpenID Auth 2.0 vs OAuth 1.0 – OAuth 1.0の方がSexy? – Hybridで(むりやり?)共存可能 • 両方の機能持っていないといけない • モバイルフローに課題 • OpenID v.Next vs OAuth 2.0 – OAuth 2.0ベース or 互換性をもった形になる! 36
  • 37. OAuthの未来 • 全てのリソースアクセスをOAuthが担う – ソーシャル系からPIM、決済、POP/IMAPまで • 他のプロトコルやプラットフォームとの連携 – SAML,OpenID,OpenSocial… • 端末に縛られない! – Web/Mobileアプリからデジタル家電まで対応 できるClient Profile 37
  • 38. そんな未来を目指すために • OAuthでシングルサインオン • フィッシング対策 • 認可範囲など、細かい考え方 日本とUSはいろいろ考えが違うので、議論しながら 日本独自の拡張をみんなで考えていきたい http://oauth.jp/ 38
  • 40. 最後にちょっと告知 • Yahoo! JAPANはOAuthのSP機能につい て、改修を行いました – SSO機能の利便性向上 • 「パスワード入力の省略」機能 – ユーザーの利便性向上 • 「次回から同意省略」機能 – クライアントアプリ対応(パートナー企業様限定) • カスタムURIスキーム対応 • あとでTech Blogなどで紹介します! 40