SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
利⽤者が発信する情報を扱う
          Webサービスにおける
            認証⽅式の実装




2008/1/24               1
1. はじめに



2008/1/24             2
背景
►インターネットを取り巻く環境の変化
            ネットワークの普及と利⽤者の増⼤
            オープンソースの発展によるコスト低下
►Webの利⽤形態の変化、
     いわゆる「Web2.0」
            利⽤者発信情報 (ブログ, SNS)
            Webサービス, WebAPI化
2008/1/24                        3
利⽤者発信情報とは?
►情報取得から情報発信へ
            従来: 情報を「⾒る」
            近年: 情報を「発信」(利⽤者発信情報)


                  写真
                  ⽂書
                          Webアプリ

                利⽤者発信情報

2008/1/24                          4
Webサービスとは?
► Webアプリ同⼠が情報を交換
            SOAP, REST
            マッシュアップ
                             WebアプリA
                              (Provider)
            利⽤者
 (Webブラウザ)
                                           XML
                            Webサービス


                     HTML    WebアプリB
                             (Consumer)    加⼯
2008/1/24                                        5
利⽤者発信情報とWebサービス
► 利⽤者発信情報をWebサービスで登録
            第三者のWebアプリを経由

                            Provider
利⽤者                         (ブログ)


                       Webサービス         写真

                  写真    Consumer
                       (写真共有サイト)
                                       写真
2008/1/24                                   6
現状の問題点
►利⽤者のパスワードを使って認証
            パスワードを悪⽤される危険性

                        Provider     ID
                                   パスワード
 利⽤者
                      ID, パスワード
                ID,
              パスワード
                        Consumer
2008/1/24                                  7
モチベーション
►対象
            利⽤者発信情報を扱うWebサービス
►⽬的
            第三者経由での利⽤者発信情報の操作
            利⽤者のパスワードを第三者に渡さない



2008/1/24                        8
トークンを⽤いた認証⽅式
► Webサービスの認証にトークンを⽤いる
            Webサービスのサーバは利⽤者をパスワードで認証
► 普及しているとは⾔いがたい
            サービスごとに個々に実装されている

            (1) ID, パスワード      Provider

   利⽤者                                      (3)
                  トークン      [Webサービス]     トークン


                  (2)         Consumer
2008/1/24                                         9
2. 提案⽅式



2008/1/24             10
コンセプト
► 従来の問題点
            パスワード⽅式: 秘密情報が第三者へ
            トークン⽅式: サービス個々に実装
► 実装コストが普及の妨げではないか
► 提案⽅式          (CSS2007で発表)
            安全性の向上と実装規模の削減
            SSOを拡張してトークン発⾏を実現
► 実装:         OpenIDを採⽤
2008/1/24                        11
OpenIDの概要 (1)
►OpenID           Auth 2.0 (2007.12)
            インターネットでのシングルサインオン
            URLがID (複数ドメインでの利⽤)
►多数のプレイヤー
            AOL, livedoor, はてな, Sun Microsystems
            Yahoo!, Yahoo Japan! (2008.2~)


2008/1/24                                          12
OpenIDの概要 (2)
                                                          ド)
                                                  ワ
                                                      ー                             Provider
                                                                                    Provider
                                            ス
                                      (パ
                                                             u est
                                                                   )           (OpenID Provider)
                                                                                (OpenID Provider)
                                認証                 Re
                                                         q
                        者
                            の
                                            nI   D                     n se)
                                        e                        o
                   利⽤                Op                      e sp
               (5)               (                       R
                            要求                e   nI D                           (2) Discovery
利⽤者                    認証              (   Op
                 (4)            応答                                               (3) 鍵共有
                        認証
                    (6)                                         (7) 認証応答の検証


                  (1) ID                                                           Consumer
                                                                                   Consumer
                         (URL)
                               の提⽰                                              (Relying Party)
                                                                                 (Relying Party)

2008/1/24   OpenID Authentication 2.0, Chapter 3. Protocol Overview                                 13

            http://openid.net/specs/openid-authentication-2_0.html
OpenID拡張を⽤いたトークン発⾏

►OpenID拡張領域
                              Provider
                              Provider

            トークン要求                 OpenIDレスポンス
                                    + トークン応答
            トークン応答
►メッセージ⽣成                      利用者
                              利用者

     はOpenIDに依存      OpenIDリクエスト
                      + トークン要求


                             Consumer
                             Consumer

2008/1/24                                        14
トークンの要求 (Consumer)

►OpenIDリクエストの拡張領域
►要求するトークンの種類を指定
    operation 操作種別                 Provider
                                   Provider

              「⽣成」「取得」
                                        OpenIDレスポンス
              「更新」「削除」                   + トークン応答

    times     操作回数                 利用者
                                   利用者
              「n回」「無制限」
                          OpenIDリクエスト
                           + トークン要求


                                  Consumer
                                  Consumer

2008/1/24                                             15
トークンの発⾏ (Provider)
►利⽤者へトークンの発⾏可否を確認
►⽣成したトークンをDBへ保存
   token       予測不可能性を持つ               Provider
                                       Provider
               乱数
   user_id     利⽤者のID                       OpenIDレスポンス
                                             + トークン応答

   realm       ConsumerのURL            利用者
                                       利用者
   operation   操作種別
                              OpenIDリクエスト
   times       操作回数            + トークン要求


   expire      有効期限                   Consumer
                                      Consumer

2008/1/24                                                 16
トークンの応答 (Provider)
►OpenIDレスポンスの拡張領域に付与
►⽣成したトークンの値を返す
    token      ⽣成した乱数                Provider
                                     Provider


                                          OpenIDレスポンス
                                           + トークン応答



►メッセージの改竄防⽌                          利用者
                                     利用者


            HMACとnonceを付与   OpenIDリクエスト
                             + トークン要求

            ※ OpenIDの仕様             Consumer
                                    Consumer

2008/1/24                                               17
利⽤者発信情報の操作 (Consumer)

►Webサービスで利⽤者発信情報を操作
             具体的なプロトコルは実装依存
►リクエストにトークンを付加する
            token       取得した乱数
            nonce       要求ごとにインクリメントする値
            signature   token+nonceへのHMAC値




2008/1/24                                    18
3. 実装



2008/1/24           19
ソフトウェア構成
► OpenIDライブラリ     (ruby-openid) を拡張
► Ruby on Railsのコントローラから利⽤
コントローラ                       Provider
(Consumer/Provider)         コントローラ
                          Ruby on Rails         トークン拡張
OpenIDトークン拡張                              use
                                                OpenIDライブラリ

   ruby-openid 2.0.0        Consumer
                            コントローラ
    Ruby on Rails 2.0.1   Ruby on Rails


            Ruby 1.8.5
            OS (Ubuntu)
2008/1/24                                                     20
OpenIDトークン拡張
►ruby-openidのExtensionクラスを継承
►トークン要求/応答のメッセージを定義
            OpenIDライブラリ

                 OpenID::Extension



               OpenID::Token::Message

                              OpenID::Token::Request

                              OpenID::Token::Response

2008/1/24                                               21
コントローラ (Consumer/Provider)

►OpenIDライブラリを使う
►Consumer,   Provider双⽅に実装

Consumerコントローラ      Providerコントローラ
 begin    トークン要求を   index      トークン⽣成可否
          ⽣成する                 を利⽤者に確認
 complete トークン応答を   decision   トークン応答を⽣
          受信する                 成する


2008/1/24                                 22
4. 評価



2008/1/24           23
評価の観点
► 実装規模がどれくらい削減できるか
            【提案⽅式】SSOを拡張する場合
            すべて個別に実装する場合

             トークン拡張
                       実装規模
             既存のOpenID  の差    ???
              ライブラリ

              SSOを拡張          個別に実装
2008/1/24                             24
⽐較対象 (OAuth)
►トークン発⾏の実装の1つ
►2007年12⽉にリリース
►認証⽅式に依存しない仕様

                  提案⽅式       OAuth
                (SSOを拡張)   (個別に実装)
       認証     OpenID      依存しない
       トークン発⾏ OpenIDの拡張領域 独⾃に定めた仕様
              を使⽤する
2008/1/24                            25
機能の⽐較
►トークン発⾏と取得はどちらも可能
                          提案⽅式           OAuth
                        (SSOを拡張)       (個別に実装)
            トークンの
                            ○              ○
            発⾏と取得
            メッセージの          ○              ○
            改ざん防⽌       (MAC, nonce)   (MAC, nonce)
            ⽤途に応じた                     仕様を拡張する
            トークン発⾏          ○
                                        ことで実現可
            (操作種別、回数)
2008/1/24                                             26
実装規模 (LOC) での⽐較
►トークン発⾏の実装規模はおよそ1:13
            メッセージやMAC⽣成に既存機能を利⽤
       800
       700
       600
       500                                    トークン発⾏
       400                                    Consumer
       300
                                              Provider
       200
       100
            0
2008/1/24       SSOを拡張(提案⽅式)   個別に実装(OAuth)              27
5. 考察



2008/1/24           28
まとめ
►従来の問題点
            パスワード⽅式: 秘密情報が第三者へ
            トークン⽅式: サービス個々に実装
►提案⽅式
            OpenIDを拡張してトークンを発⾏
            Ruby上で実装
            独⾃実装との⽐較で1/10以下の規模
2008/1/24                        29
ご清聴ありがとうございました




2008/1/24           30
利⽤例



2008/1/24         31
ToDoリストの取得
►Consumerはトークンを使って
     Provider上のToDoリストを取得する
                             ToDo管理サービス
                             ToDo管理サービス
                                (Provider)
                                 (Provider)
                         ン
                        ク
            利⽤者    ト
                    ー

                              トークン   ToDoリスト



                             ToDo取得サービス
                             ToDo取得サービス
                                (Consumer)
                                 (Consumer)
2008/1/24                                      32
サンプル (Consumer)




2008/1/24                     33
2008/1/24   34
2008/1/24   35

Mais conteúdo relacionado

Mais procurados

Towards Effective Browsing of Large Scale Social Annotations
Towards Effective Browsing of Large Scale Social AnnotationsTowards Effective Browsing of Large Scale Social Annotations
Towards Effective Browsing of Large Scale Social Annotations
momota
 
Web技術勉強会11回目
Web技術勉強会11回目Web技術勉強会11回目
Web技術勉強会11回目
龍一 田中
 
платформа Microsoft Windows Embedded
платформа Microsoft Windows Embeddedплатформа Microsoft Windows Embedded
платформа Microsoft Windows Embedded
Liudmila Li
 

Mais procurados (16)

S8
S8S8
S8
 
Towards Effective Browsing of Large Scale Social Annotations
Towards Effective Browsing of Large Scale Social AnnotationsTowards Effective Browsing of Large Scale Social Annotations
Towards Effective Browsing of Large Scale Social Annotations
 
0423FAST
0423FAST0423FAST
0423FAST
 
Web技術勉強会11回目
Web技術勉強会11回目Web技術勉強会11回目
Web技術勉強会11回目
 
Andoroid入門 Open
Andoroid入門  OpenAndoroid入門  Open
Andoroid入門 Open
 
enNetforum Toyama Presentation
enNetforum Toyama PresentationenNetforum Toyama Presentation
enNetforum Toyama Presentation
 
Top Ten SE Concepts V11.1 Jp
Top Ten SE Concepts V11.1 JpTop Ten SE Concepts V11.1 Jp
Top Ten SE Concepts V11.1 Jp
 
XS Japan 2008 Ganeti Japanese
XS Japan 2008 Ganeti JapaneseXS Japan 2008 Ganeti Japanese
XS Japan 2008 Ganeti Japanese
 
イントラネット検索・「ジーラ・ドキュメント・サーチ」の機能と特徴
イントラネット検索・「ジーラ・ドキュメント・サーチ」の機能と特徴イントラネット検索・「ジーラ・ドキュメント・サーチ」の機能と特徴
イントラネット検索・「ジーラ・ドキュメント・サーチ」の機能と特徴
 
PFI会社案内
PFI会社案内PFI会社案内
PFI会社案内
 
14th issue
14th issue14th issue
14th issue
 
XS Japan 2008 App Data Japanese
XS Japan 2008 App Data JapaneseXS Japan 2008 App Data Japanese
XS Japan 2008 App Data Japanese
 
SocialDict @ 第3回SBM研究会
SocialDict @ 第3回SBM研究会SocialDict @ 第3回SBM研究会
SocialDict @ 第3回SBM研究会
 
платформа Microsoft Windows Embedded
платформа Microsoft Windows Embeddedплатформа Microsoft Windows Embedded
платформа Microsoft Windows Embedded
 
Досвід міста Чернівці у розвитку інструментів забезпечення участі громадян в ...
Досвід міста Чернівці у розвитку інструментів забезпечення участі громадян в ...Досвід міста Чернівці у розвитку інструментів забезпечення участі громадян в ...
Досвід міста Чернівці у розвитку інструментів забезпечення участі громадян в ...
 
OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会
 

Destaque

Modernizerを用いたHTML5Webサイトの構築
Modernizerを用いたHTML5Webサイトの構築Modernizerを用いたHTML5Webサイトの構築
Modernizerを用いたHTML5Webサイトの構築
Hiroaki Wakamatsu
 
RubyからJavaScriptへ (!tDiary会議 2011)
RubyからJavaScriptへ (!tDiary会議 2011)RubyからJavaScriptへ (!tDiary会議 2011)
RubyからJavaScriptへ (!tDiary会議 2011)
Kohei MATSUOKA
 

Destaque (11)

Intro 1
Intro 1Intro 1
Intro 1
 
Front-end package managers
Front-end package managersFront-end package managers
Front-end package managers
 
Modernizerを用いたHTML5Webサイトの構築
Modernizerを用いたHTML5Webサイトの構築Modernizerを用いたHTML5Webサイトの構築
Modernizerを用いたHTML5Webサイトの構築
 
RubyからJavaScriptへ (!tDiary会議 2011)
RubyからJavaScriptへ (!tDiary会議 2011)RubyからJavaScriptへ (!tDiary会議 2011)
RubyからJavaScriptへ (!tDiary会議 2011)
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great Infographics
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
 
You Suck At PowerPoint!
You Suck At PowerPoint!You Suck At PowerPoint!
You Suck At PowerPoint!
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 

Mais de Kohei MATSUOKA (6)

PStore and Memcached benchmark
PStore and Memcached benchmarkPStore and Memcached benchmark
PStore and Memcached benchmark
 
How does the Waterfall model survive?
How does the Waterfall model survive?How does the Waterfall model survive?
How does the Waterfall model survive?
 
OpenID Introduction
OpenID IntroductionOpenID Introduction
OpenID Introduction
 
about Shibuya.trac naming
about Shibuya.trac namingabout Shibuya.trac naming
about Shibuya.trac naming
 
ID Management
ID ManagementID Management
ID Management
 
yet another TDD
yet another TDDyet another TDD
yet another TDD
 

Secured Authentication Method for Managing Consumer-Generated Information in Web-Services