• Like
  • Save
これからのネイティブアプリにおけるOpenID Connectの活用
Upcoming SlideShare
Loading in...5
×
 

これからのネイティブアプリにおけるOpenID Connectの活用

on

  • 3,083 views

タイトル: ...

タイトル:
『これからのネイティブアプリにおけるOpenID Connectの活用』

概要:
 近年モバイルアプリケーションの多くはログインを必須としています。自社他社提供のWeb APIの利用にあたりクライアントサイド、サーバーサイドのそれぞれにおいて認証の仕組みを理解し、正しい認証の実装が求められます。
 本セッションではユーザーとデバイスの2つの視点でモバイルにおける認証をご紹介します。
ユーザー認証のパートでは、OAuth 2.0ベースのID連携の問題点に触れ、その課題を解決するためのOpenID Connectの仕様について解説します。
デバイス認証のパートでは、スマートフォンやタブレットを識別するための仕様の解説と活用方法について解説します。

Developers Summit 2014 【13-C-5】 Feb. 13, 2014
URL: https://event.shoeisha.jp/devsumi/20140213/session/383/

Statistics

Views

Total Views
3,083
Views on SlideShare
2,791
Embed Views
292

Actions

Likes
11
Downloads
72
Comments
0

6 Embeds 292

http://www.openid.or.jp 277
http://openid.or.jp 7
https://twitter.com 4
http://www.feedspot.com 2
http://mym.corp.yahoo.co.jp 1
http://210.129.193.155 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    これからのネイティブアプリにおけるOpenID Connectの活用 これからのネイティブアプリにおけるOpenID Connectの活用 Presentation Transcript

    • これからのネイティブアプリにおける OpenID Connectの活用 @kura_lab @nov
    • 倉林 雅(通称: kura) OpenID ファウンデーション・ジャパン エバンジェリスト ヤフー株式会社 IDサービス エンジニア ID厨 @kura_lab Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • Nov Matake OpenID Foundation Japan Evangelist 初号機 OAuth.jp Idcon Rubyist fb_graph, rack-oauth2, openid_connect etc. Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • OpenID ファウンデーション・ジャパン 2008年設立 OpenID TechNight 翻訳・教育 WG トラストフレームワーク WG Enterprise Identity WG Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • Japan Identity Cloud Summit Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • #idcon Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • OpenID Connect x ユーザー認証 @kura_lab
    • これまでつくったアプリを 思い出してみよう Copyright 2013 OpenID Foundation Japan - All Rights Reserved. iPhone Apps by AxsDeny
    • Facebookログインを つかってますか? Copyright 2013 OpenID Foundation Japan - All Rights Reserved. click click by Tim Franklin Photography
    • Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • OAuth 2.0 の Implicit フロー Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • User’s Browser Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • Your App Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • Facebook Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • アプリ表示 Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • ダイアログ表示 Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • access token 取得 Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • APIリクエスト Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • トークン置き換え攻撃
 の脆弱性 Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • トークン置き換え攻撃
 の脆弱性 【メモ】 ネイティブアプリの多くはバックエンドに 自前のサーバーがあり通信を行う アプリからバックエンドサーバーにアクセストークンを 送って認証すると脆弱性が生まれる Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • Your App Your Server GET /me User Info : Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • Weak Point GET /me User Info : Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • access token
 トークン置き換え GET /me User Info : Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • 【メモ】 悪意ある開発者が別のアプリで他人のアクセストークンを取得する そのアクセストークンを置き換えてバックエンドサーバーに送信する access token
 トークン置き換え GET /me User Info : Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • GET /me User Info : × 他人のユーザデータ Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • 【メモ】 アクセストークンを発行したクライアントを検証せずに ユーザ情報を取得してしまうと謝ったユーザで認証を行ってしまう GET /me User Info : × 他人のユーザデータ Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • クライアントの制限 Audience Restriction Copyright 2013 OpenID Foundation Japan - All Rights Reserved. security checked at Schiphol by sharyn morrow
    • 【メモ】 前述のImplicitフローはSDKで実装されるケースが多いが、
 バックエンドサーバにアクセストークンを渡すことを想定していない
 クライアントの制限をせずにトークンを受け入れると問題が発生する クライアントの制限 Audience Restriction Copyright 2013 OpenID Foundation Japan - All Rights Reserved. security checked at Schiphol by sharyn morrow
    • ID Token? Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Question Mark Block by Jared Cherup
    • ID Token? 【メモ】 Implicitを使ってサーバーサイドで認証を行う際には OpenID Connectの仕様にあるID Tokenを用いることで トークン置き換え攻撃の脆弱性を防ぐことができる Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Question Mark Block by Jared Cherup
    • eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9 . eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4 MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLm NvbS9pc19yb290Ijp0cnVlfQ . dBjftJeZ4CVPmB92K27uhbUJU1p1r_wW1gF WFOEjXk Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • 【メモ】 OpenID Connectで用いられるid_tokenパラメーターのサンプル eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9 . eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4 MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLm NvbS9pc19yb290Ijp0cnVlfQ . dBjftJeZ4CVPmB92K27uhbUJU1p1r_wW1gF WFOEjXk Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • JSONオブジェクト, Base64 eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9 . eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4 MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLm NvbS9pc19yb290Ijp0cnVlfQ . dBjftJeZ4CVPmB92K27uhbUJU1p1r_wW1gF WFOEjXk Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • ヘッダー部 eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9 . eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4 MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLm NvbS9pc19yb290Ijp0cnVlfQ . dBjftJeZ4CVPmB92K27uhbUJU1p1r_wW1gF WFOEjXk Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • ペイロード部 eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9 . eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4 MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLm NvbS9pc19yb290Ijp0cnVlfQ . dBjftJeZ4CVPmB92K27uhbUJU1p1r_wW1gF WFOEjXk Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9 . eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4 MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLm NvbS9pc19yb290Ijp0cnVlfQ . dBjftJeZ4CVPmB92K27uhbUJU1p1r_wW1gF WFOEjXk 署名, HMAC-SHA256 Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • JSONオブジェクト {“typ”:”JWT”, “alg”:"HS256"} ヘッダー部 ! {“iss”:”https://auth.yahoo.co.jp”, “sub”:”123456789”, “aud”:”abcdefg, ペイロード部 “nonce”:”xyz”, “iat”:1291836800, “exp”:1300819380} Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • iss: issuer, トークンの発行者 aud: audience, クライアント識別子 sub: subject, ユーザー識別子 Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • {“typ”:”JWT”, “alg”:"HS256"} ! {“iss”:”https://auth.yahoo.co.jp”, “sub”:”123456789”, “aud”:”abcdefg, audience 
 “nonce”:”xyz”, = クライアント識別子 “iat”:1291836800, “exp”:1300819380} Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • ID Tokenでわかること isser が audience のために subject を認証する Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • ID Tokenでわかること isser が audience のために subject を認証する 【メモ】 サーバーサイドでID Tokenを受け取りaudienceを検証することで 他のアプリで発行されたトークンと区別することができる Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • リプレイアタックの対処法 DA-SC-91-05372 by U.S. Army Korea (Historical Image Archive) Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • リプレイアタックの対処法 【メモ】 サーバーサイドでトークンの検証をおこなうため リプレイアタックの対策をしなければならない DA-SC-91-05372 by U.S. Army Korea (Historical Image Archive) Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • nonce = number used once Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • nonce = number used once 【メモ】 ID Tokenにはリプレイアタック対策のnonceが導入されている Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • {“typ”:”JWT”, “alg”:"HS256"} ! {“iss”:”https://auth.yahoo.co.jp”, “sub”:”123456789”, “aud”:”abcdefg, リクエストごとに “nonce”:”xyz”, ユニークな文字列 “iat”:1291836800, “exp”:1300819380} Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • ID Tokenで対策 トークン置き換え攻撃
 リプレイアタック Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Armour on display in the War Gallery by Royal Armouries
    • GET /me User Info : Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • nonceを生成リクエスト GET /me User Info : Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • access token ID Token (nonce) GET /me User Info : Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • ID Token (nonce) トークン置き換え GET /me User Info : Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • 【メモ】 前述の脆弱性の例ではアクセストークンをサーバーに送信していたが アクセストークンは認証のための仕組みではないため利用しない かわりにID Tokenを送信して検証する ID Token (nonce) トークン置き換え GET /me User Info : Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • ID Token (nonce) GET /me User Info 検証で不正を防止 : Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • 【メモ】 署名の検証、audienceなどをチェックして 問題なければログイン状態にする ID Token (nonce) GET /me User Info 検証で不正を防止 : Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Source: developers.facebook.com
    • ネイティブアプリに を埋め込む? Copyright 2013 OpenID Foundation Japan - All Rights Reserved. iPhone 5S white vs. iPhone 5 black/slate by Morid1n
    • ネイティブアプリに を埋め込む? 【メモ】 ここまでサーバーサイドでの認証をみてきたがクライアントサイドに注目 ID Tokenにおける署名検証に用いる鍵についての紹介 Copyright 2013 OpenID Foundation Japan - All Rights Reserved. iPhone 5S white vs. iPhone 5 black/slate by Morid1n
    • 署名? HMAC-SHA1? HMAC-SHA256? Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • 共通 暗号と公開 Copyright 2013 OpenID Foundation Japan - All Rights Reserved. 暗号
    • 共通 暗号と公開 暗号 【メモ】 署名検証に共通鍵暗号を用いた場合は署名生成時と同一の鍵で検証する 公開鍵暗号を用いた場合は署名生成時に用いた秘密鍵ではなく 公開鍵を用いて検証する Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • ネイティブアプリに 共通 (secret)を
 埋め込むべきではない Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • ネイティブアプリに 共通 (secret)を
 埋め込むべきではない 【メモ】 署名に共通鍵暗号を用いる場合は 鍵が漏洩すると署名を偽装されてしまう危険性がある Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • ID Token
 暗号化アルゴリズム Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Security by jan.gosmann
    • HMAC 共通鍵暗号 RSA ECDSA 公開鍵暗号 ! ※現在のDraft Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • 公開 暗号の署名検証 共通 (secret)を 埋め込む必要がなくなる Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • 公開 暗号の署名検証 共通 (secret)を 埋め込む必要がなくなる 【メモ】 サーバーサイドでは鍵の漏洩しにくいため共通鍵暗号でもよい ネイティブアプリではアプリ内部をのぞかれる可能性があるため 漏洩してもよい公開鍵暗号を選択するとよい Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • ID Tokenで ユーザー認証を! Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Passport by jpmatth
    • ID Token + OAuth 2.0 Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • OpenID Connect Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • 2011~ Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • 詳しくは http://openid.net/connect/ Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • OpenID Connect x Device AuthN @nov
    • Developer 💓 Device IDs
    • Device IDs iOS Android UDID (dead) Android ID UUID others? Vendor Identifier Advertising Identifier Device Token (push) ! Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • http://www.atmarkit.co.jp/ait/articles/1211/06/news004.html
    • Developer 💓 Bearer Tokens
    • Bearer Tokens そのトークンを所有しているという事実が そのトークンを利用するための唯一の条件 ! ! ! 漏れたらオワリ プロキシ挟めば書き換え可能 Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • v.s
    • Developer 💔 公開 暗号
    • 公開 暗号(こうかいかぎあんごう、Public key cryptosystem) とは、暗号化と復号に別個の (手順)を使い、暗号化の為の を 公開できるようにした暗号方式である。1980年代にかけ、日本で 紹介された直後は「公衆暗号系」と訳されていた。 暗号は通信の秘匿性を高めるための手段だが、それに必須の もま た情報なので、 自体を受け渡す過程で盗聴されてしまうリスクが あり、秘匿性を高める障害だった。この問題に対して、暗号化 の 配送問題を解決したのが公開 暗号である。 http://ja.wikipedia.org/wiki/公開鍵暗号 Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • 秘密 を渡さずに ! 公開 だけを渡して ! 秘密 を持っていることを証明できる Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • inに ha yC Ke 上の れば イス 成す デバ を生 ペア 鍵 秘密 を渡さずに ! 公開 だけを渡して ! 秘密 を持ってるデバイスを認証できる …こういうのを HoK (Holder of Key) 方式とか言うらしい Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • Self-Issued IdP ID Token ベース Subject (sub) は公開 のハッシュ値 (SHA256) 公開 自体を ID Token に含める 秘密 使って署名 詳しくは OpenID Connect Core - Section 7 参照 Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • セキュアストレージ バックアップ可能 iCloud 連携も可能 RSA Key Pair 生成 RSA 署名処理 iOS is ready.
    • Self-Issued IdP ID Token ベース Subject (sub) は公開 のハッシュ値 (SHA256) 公開 自体を ID Token に含める 秘密 使って署名 詳しくは OpenID Connect Core - Section 7 参照 Copyright 2013 OpenID Foundation Japan - All Rights Reserved.
    • Developer 💓 Device IDs
    • Action!! Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Festival of Fools by Jett Loe
    • 2014.2.25 OpenID Connect 仕様最終版へ!! Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Nate and Birthday Cake (2 of 5) by Chris Pencis
    • 日本語翻訳準備中… Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Dictionary by Chris
    • 2014.3.7 OpenID TechNight @nov Copyright 2013 OpenID Foundation Japan - All Rights Reserved. Join Us! by Doran