SlideShare a Scribd company logo
OpenID Connect Demo

IdCon #11   IDENTITY CONFERENCE



                        @ritou
やりません
Implicit Flowを考える会

IdCon #11   IDENTITY CONFERENCE



                        @ritou
OAuth 2.0には
Implicit Flowってのがありまして
Client Secretを
安全に保管できない場合に
 使うことになってます
使いどころ
• JavaScriptをインクルードしてClient ID
  だけ指定して呼び出せばOAuthの処
  理やっちゃう系

• iOS/Androidのアプリやデスクトップ
  PCなど、、リバースエンジニアリング
  可能なクライアント
今回問題となるのは、
いわゆる

OAuth認証
OAuth 2.0 + Profile API で SSO
   をImplicitでやる場合
10




     OAuth : Implicit Flow
            Server




Client   1. ログインしたい    End User
11




     OAuth : Implicit Flow
               Server



         2. Serverさん、
         ロッカーの
         合鍵ください

Client     1. ログインしたい   End User
12




     OAuth : Implicit Flow
               Server



         2. Serverさん、
         ロッカーの          3. 合鍵あげます
         合鍵ください

Client     1. ログインしたい     End User
13




         OAuth : Implicit Flow
                 Server
4. 合鍵を使って
プロフィール情報
 のロッカーに
    アクセス
          2. Serverさん、
          ロッカーの           3. 合鍵あげます
          合鍵ください

    Client    1. ログインしたい    End User
14




         OAuth : Implicit Flow
                 Server
4. 合鍵を使って

             ログイン
プロフィール情報
 のロッカーに
    アクセス
          2. Serverさん、

              成功
          ロッカーの           3. 合鍵あげます
          合鍵ください

    Client    1. ログインしたい    End User
これがそのまま行われる
 合鍵=Access Token
Idcon11 implicit demo
見せましょう
材料
• OAuth 2.0のImplicit Flowを利用するClient
  – Sample Client A




  できあがったものがこちらです。
  https://r-
    weblife.sakura.ne.jp/idcon11/SampleA.php
Access Tokenだけで
簡単にログインさせることが
     できました。
Access Tokenだけで
簡単にログインさせることが
     できました。
AccessTokenに紐づく人を
  認証された人として
     扱っています
もし、
サンプルサイトAの管理者が
  悪いことを考えたら
「うちでもらったAccess Token
 よそでも使えるのでは?」
24




     OAuth : Implicit Flow
            Server




Client   1. ログインしたい    End User
25




     OAuth : Implicit Flow
               Server



         2. Serverさん、
         ロッカーの
         合鍵ください

Client     1. ログインしたい   End User
26




     OAuth : Implicit Flow
               Server    Evil
                        Client
                                 3.こっそり
                                 別の合鍵
         2. Serverさん、            あげます
         ロッカーの
         合鍵ください

Client     1. ログインしたい      End User
27




         OAuth : Implicit Flow
                 Server    Evil
4. 合鍵を使って                 Client
プロフィール情報
                                   3.こっそり
 のロッカーに
                                   別の合鍵
    アクセス
          2. Serverさん、             あげます
          ロッカーの
          合鍵ください

    Client    1. ログインしたい     End User
28




         OAuth : Implicit Flow
                 Server    Evil
4. 合鍵を使って                 Client

             ログイン
プロフィール情報
                                   3.こっそり
 のロッカーに
                                   別の合鍵
    アクセス
          2. Serverさん、             あげます

             成功???
          ロッカーの
          合鍵ください

    Client    1. ログインしたい     End User
サイトAがもらったAccess
TokenでサイトBのレスポ
ンス中のAccessTokenを
置き換える
やりましょう
材料
• OAuth 2.0のImplicit Flowを利用するClient
  – Sample Client A
  – Sample Client B
• 悪い管理人
  –A

  できあがったものがこちらです。
  https://r-weblife.sakura.ne.jp/idcon11/SampleB.php
Access Tokenだけで
別人としてログインさせることが
      できました。
これはやばい?
Implicit Flowを
Disってるわけではない
フラグメントで受け取った
    AccessTokenを
信用するしかないしくみだし
Access Tokenは
リソースアクセスのためのもの
わかってて
Profile APIの結果で
ログインさせますか?
       って話
では、そういうClientに
ログインさせたい場合は
   どうすれば?
そこで
OpenID Connect
どう違うのか?
OpenID Connectでは、
認証結果の受け渡しに
   ID Tokenを使う
ID Token=紹介状
43




OpenID Connect : Implicit Flow
            Server




 Client   1. ログインしたい   End User
44




OpenID Connect : Implicit Flow
                Server



          2. Serverさん、
          証明書と合鍵
          ください

 Client     1. ログインしたい   End User
45




OpenID Connect : Implicit Flow
                Server



          2. Serverさん、   3. 合鍵と証明書
          証明書と合鍵             あげます
          ください

 Client     1. ログインしたい     End User
46




 OpenID Connect : Implicit Flow
                 Server



           2. Serverさん、   3. 合鍵と証明書
           証明書と合鍵             あげます
           ください

  Client     1. ログインしたい     End User
4. 証明書使って
 ログイン処理
47




   OpenID Connect : Implicit Flow
                 Server
5. 合鍵を使って
プロフィール情報
 のロッカーに
    アクセス                  3. 合鍵と証明書
          2. Serverさん、
          証明書と合鍵              あげます
          ください

    Client    1. ログインしたい    End User
 4. 証明書使って
  ログイン処理
48




         OAuth : Implicit Flow
                 Server
5. 合鍵を使って

          これで
プロフィール情報
 のロッカーに
    アクセス                  3. 合鍵と証明書
          2. Serverさん、

         いける?
          証明書と合鍵              あげます
          ください

    Client    1. ログインしたい    End User
 4. 証明書使って
  ログイン処理
ID Tokenの例
• eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3
  MiOiJodHRwOlwvXC
  9zZXJ2ZXIuZXhhbXBsZS5jb20iLCJ1c2VyX2lkIjoi
  MjQ4Mjg5NzYxMDAxIiwiYXVkIjoiaH
  R0cDpcL1wvY2xpZW50LmV4YW1wbGUuY29tI
  iwiZXhwIjoxMzExMjgxOTcwfQ.eDesUD0vzDH
  3T1G3liaTNOrfaeWYjuRCEPNXVtaazNQ
ID Tokenの例
• eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3

        意味不明
  MiOiJodHRwOlwvXC
  9zZXJ2ZXIuZXhhbXBsZS5jb20iLCJ1c2VyX2lkIjoi
  MjQ4Mjg5NzYxMDAxIiwiYXVkIjoiaH
  R0cDpcL1wvY2xpZW50LmV4YW1wbGUuY29tI
  iwiZXhwIjoxMzExMjgxOTcwfQ.eDesUD0vzDH
  3T1G3liaTNOrfaeWYjuRCEPNXVtaazNQ
ID Tokenの中身
• iss : Server Identifier
• user_id :
• aud : Client Identifier
• exp : (有効期限)
• acr : 認証レベルなど
• nonce : (リプレイアタック防ぐための文字列)
これらをJSON形式にして署名つけたもの
ID Tokenを使うメリット
• Server,Client,ユーザーID,nonceを含むため、
  Clientは自ら送ったリクエストに対するレスポ
  ンスだということを確認できる
OpenID Connectによって
Access Token置き換え攻撃
に気づけるのかやってみた
材料
• OAuth 2.0のImplicit Flowを利用するClient
  – Sample Client A
• OpenID ConnectのImplicit Flowを利用するClient
  – Sample Client C
• 悪い管理人
  –A

  できあがったものがこちらです。
  https://r-weblife.sakura.ne.jp/idcon11/SampleC.php
ID Tokenを使うことで
Access Token置き換え攻撃
       にも気づける
OpenID Connect
 やりましょう
いや、みなさん、
他にも言いたいこと
  あると思う
ID Tokenを
置き換えられないの?
ID Tokenを
置き換えられないの?
        ↓
中のClientIDやらを見て
検証すれば気づくはず
Access Tokenとの組み合わせも
     確認できないよね?
Access Tokenとの組み合わせも
     確認できないよね?
              ↓
          ID Tokenに
 Access Tokenのhashつっこむ
         のを検討中
続きはまたあとで!
 Twitter/Facebook/Google+
  などで質問受け付けます
(@_nat,@nov,@ritouあたり)

More Related Content

PPTX
OAuth認証について
PDF
OAuth 2.0の概要とセキュリティ
PDF
なんとなくOAuth怖いって思ってるやつちょっと来い
PDF
今更聞けないOAuth2.0
PDF
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
PDF
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
PDF
ID & IT 2013 - OpenID Connect Hands-on
PDF
Authlete overview
OAuth認証について
OAuth 2.0の概要とセキュリティ
なんとなくOAuth怖いって思ってるやつちょっと来い
今更聞けないOAuth2.0
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
ID & IT 2013 - OpenID Connect Hands-on
Authlete overview

What's hot (20)

PDF
[SC07] Azure AD と Ruby で学ぶ OpenID Connect!
PDF
マイクロWebアプリケーション - Developers.IO 2016
PDF
CIBA (Client Initiated Backchannel Authentication) の可能性 #authlete #api #oauth...
PDF
OAuth認証再考からのOpenID Connect #devlove
PDF
OAuth 2.0による認可の流れ
PDF
OID to OIDC idcon mini vol1
PDF
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
PDF
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
PDF
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
PDF
API提供におけるOAuthの役割 #apijp
PDF
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
PDF
認証技術、デジタルアイデンティティ技術の最新動向
PPTX
2014年4月17日 dstnHub発表スライド ライトニングトークス「開発部開発グループ OAuth2.0 認証を実現してみた」
PDF
認証の課題とID連携の実装 〜ハンズオン〜
PPTX
OAuth2基礎知識
PDF
OpenID Connect - Nat Sakimura at OpenID TechNight #7
PDF
これからのネイティブアプリにおけるOpenID Connectの活用
PPTX
Idcon25 FIDO2 の概要と YubiKey の実装
PDF
Oauth2.0とか(認証と認可)_201403
PPTX
ID連携のあるとき~、ないとき~ #エンプラ編
[SC07] Azure AD と Ruby で学ぶ OpenID Connect!
マイクロWebアプリケーション - Developers.IO 2016
CIBA (Client Initiated Backchannel Authentication) の可能性 #authlete #api #oauth...
OAuth認証再考からのOpenID Connect #devlove
OAuth 2.0による認可の流れ
OID to OIDC idcon mini vol1
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
API提供におけるOAuthの役割 #apijp
エンタープライズIT環境での OpenID Connect / SCIM の具体的実装方法 idit2014
認証技術、デジタルアイデンティティ技術の最新動向
2014年4月17日 dstnHub発表スライド ライトニングトークス「開発部開発グループ OAuth2.0 認証を実現してみた」
認証の課題とID連携の実装 〜ハンズオン〜
OAuth2基礎知識
OpenID Connect - Nat Sakimura at OpenID TechNight #7
これからのネイティブアプリにおけるOpenID Connectの活用
Idcon25 FIDO2 の概要と YubiKey の実装
Oauth2.0とか(認証と認可)_201403
ID連携のあるとき~、ないとき~ #エンプラ編
Ad

Viewers also liked (15)

PDF
Full stack security
PDF
アイデンティティ2.0とOAuth/OpenID Connect
PDF
OpenID Connect 101 @ OpenID TechNight vol.11
PDF
OpenID ConnectとAndroidアプリのログインサイクル
PDF
Python で OAuth2 をつかってみよう!
PDF
YAPC::Tokyo 2013 ritou OpenID Connect
PDF
AngularFireで楽々バックエンド
PDF
サバフェス 2016 Yahoo! ID連携のご紹介 〜OpenID Connect入門〜
PDF
ID連携概要 - OpenID TechNight vol.13
PDF
Oracle API Gateway
PPTX
オフラインファーストの思想と実践
PPTX
Securing RESTful APIs using OAuth 2 and OpenID Connect
PPTX
Angular2実践入門
PDF
angular1脳で見るangular2
PPTX
Api gatewayの話
Full stack security
アイデンティティ2.0とOAuth/OpenID Connect
OpenID Connect 101 @ OpenID TechNight vol.11
OpenID ConnectとAndroidアプリのログインサイクル
Python で OAuth2 をつかってみよう!
YAPC::Tokyo 2013 ritou OpenID Connect
AngularFireで楽々バックエンド
サバフェス 2016 Yahoo! ID連携のご紹介 〜OpenID Connect入門〜
ID連携概要 - OpenID TechNight vol.13
Oracle API Gateway
オフラインファーストの思想と実践
Securing RESTful APIs using OAuth 2 and OpenID Connect
Angular2実践入門
angular1脳で見るangular2
Api gatewayの話
Ad

Similar to Idcon11 implicit demo (20)

PDF
Introduction of OAuth 2.0 vol.1
PDF
OpenID Connect入門
PDF
The Latest Specs of OpenID Connect at #idcon 9
PDF
OCHaCafe#5 - 避けては通れない!認証・認可
PDF
091009 Identity Conference #6 ritou
PPTX
OIDC(OpenID Connect)について解説③
PDF
Anonymous OAuth Test
PDF
OAuth 2.0 と ライブラリ
PDF
Authentication and Authorization of The Latest Keycloak
PDF
0905xx Hybrid Memo
PDF
kitproライトニングトーク
PDF
Financial-grade API Hands-on with Authlete
PDF
Whats wrong oauth_authn
PDF
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
PDF
TwitterのOAuthってなんぞ?
PDF
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
PPTX
FAPI and beyond - よりよいセキュリティのために
PDF
LINEログインの最新アップデートとアプリ連携ウォークスルー
PPTX
SSLの技術的な仕組みとサイトのSSL化について
PPTX
Chrome ExtensionでSelf-Issued OpenID Provider
Introduction of OAuth 2.0 vol.1
OpenID Connect入門
The Latest Specs of OpenID Connect at #idcon 9
OCHaCafe#5 - 避けては通れない!認証・認可
091009 Identity Conference #6 ritou
OIDC(OpenID Connect)について解説③
Anonymous OAuth Test
OAuth 2.0 と ライブラリ
Authentication and Authorization of The Latest Keycloak
0905xx Hybrid Memo
kitproライトニングトーク
Financial-grade API Hands-on with Authlete
Whats wrong oauth_authn
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
TwitterのOAuthってなんぞ?
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and beyond - よりよいセキュリティのために
LINEログインの最新アップデートとアプリ連携ウォークスルー
SSLの技術的な仕組みとサイトのSSL化について
Chrome ExtensionでSelf-Issued OpenID Provider

More from Ryo Ito (15)

PDF
安全な"○○でログイン"の作り方 @ NDS in Niigata #1
PDF
idcon mini vol3 CovertRedirect
PDF
OpenID-TechNight-11-LT-mixi
PDF
Idcon 17th ritou OAuth 2.0 CSRF Protection
PDF
#idcon 15th ritou 2factor auth
PDF
Open id connect claims idcon mini vol1
PDF
Account Chooser idcon mini Vol.1
PDF
BackplaneProtocol超入門
PDF
UserManagedAccess_idcon13
PDF
WebIntents × SNS
PDF
OpenID_Connect_Spec_Demo
PDF
OAuth 2.0 MAC Authentication
PDF
OAuth 2.0 Dance School #swj
PDF
Ritou idcon7
PDF
Summary of OAuth 2.0 draft 8 memo
安全な"○○でログイン"の作り方 @ NDS in Niigata #1
idcon mini vol3 CovertRedirect
OpenID-TechNight-11-LT-mixi
Idcon 17th ritou OAuth 2.0 CSRF Protection
#idcon 15th ritou 2factor auth
Open id connect claims idcon mini vol1
Account Chooser idcon mini Vol.1
BackplaneProtocol超入門
UserManagedAccess_idcon13
WebIntents × SNS
OpenID_Connect_Spec_Demo
OAuth 2.0 MAC Authentication
OAuth 2.0 Dance School #swj
Ritou idcon7
Summary of OAuth 2.0 draft 8 memo

Idcon11 implicit demo