35
2008/1/24 2008/1/24 1 利⽤者が発信する情報を扱う 利⽤者が発信する情報を扱う Web Web サービスにおける サービスにおける 認証⽅式の実装 認証⽅式の実装

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

Embed Size (px)

Citation preview

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

2008/1/242008/1/24 11

利⽤者が発信する情報を扱う利⽤者が発信する情報を扱うWebWebサービスにおけるサービスにおける認証⽅式の実装認証⽅式の実装

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

2008/1/242008/1/24 22

1. 1. はじめにはじめに

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

2008/1/24 3

背景背景

►►インターネットを取り巻く環境の変化インターネットを取り巻く環境の変化ネットワークの普及と利⽤者の増⼤ネットワークの普及と利⽤者の増⼤オープンソースの発展によるコスト低下オープンソースの発展によるコスト低下

►►WebWebの利⽤形態の変化、の利⽤形態の変化、いわゆる「いわゆる「Web2.0Web2.0」」利⽤者発信情報利⽤者発信情報 ((ブログブログ, SNS), SNS)WebWebサービスサービス, WebAPI, WebAPI化化

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

2008/1/24 4

利⽤者発信情報とは?利⽤者発信情報とは?

►►情報取得から情報発信へ情報取得から情報発信へ従来従来: : 情報を「⾒る」情報を「⾒る」近年近年: : 情報を「発信」(情報を「発信」(利⽤者発信情報利⽤者発信情報))

Webアプリ写真⽂書

利⽤者発信情報

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

2008/1/24 5

WebWebサービスとは?サービスとは?

►►WebWebアプリ同⼠が情報を交換アプリ同⼠が情報を交換SOAP, RESTSOAP, RESTマッシュアップマッシュアップ WebアプリA

(Provider)

WebアプリB(Consumer)

XMLWebサービス

HTML

利⽤者(Webブラウザ)

加⼯

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

2008/1/24 6

利⽤者発信情報利⽤者発信情報ととWebWebサービスサービス

►►利⽤者発信情報を利⽤者発信情報をWebWebサービスで登録サービスで登録第三者の第三者のWebWebアプリアプリをを経由経由

Provider(ブログ)

Consumer(写真共有サイト)

利⽤者

写真

Webサービス 写真

写真

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

2008/1/24 7

現状の現状の問題点問題点

►►利⽤者のパスワードを使利⽤者のパスワードを使って認証って認証パスワードを悪⽤される危険性パスワードを悪⽤される危険性

Provider

Consumer

利⽤者

ID,パスワード

ID, パスワード

IDパスワード

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

2008/1/24 8

モチベーションモチベーション

►►対象対象利⽤者発信情報を扱う利⽤者発信情報を扱うWebWebサービスサービス

►►⽬的⽬的第三者経由での利⽤者発信情報の操作第三者経由での利⽤者発信情報の操作利⽤者のパスワードを第三者に渡さない利⽤者のパスワードを第三者に渡さない

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

2008/1/24 9

トークンを⽤いた認証⽅式トークンを⽤いた認証⽅式►► WebWebサービスの認証にトークンを⽤いるサービスの認証にトークンを⽤いる

WebWebサービスのサーバは利⽤者をパスワードで認証サービスのサーバは利⽤者をパスワードで認証►►普及しているとは⾔いがたい普及しているとは⾔いがたい

サービスごとに個々に実装されているサービスごとに個々に実装されている

Provider

Consumer

利⽤者

(1) ID, パスワード

(2)

トークン [Webサービス] トークン

(3)

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

2008/1/242008/1/24 1010

2. 2. 提案⽅式提案⽅式

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

2008/1/24 11

コンセプトコンセプト

►►従来の問題点従来の問題点パスワード⽅式:パスワード⽅式: 秘密情報が第三者へ秘密情報が第三者へトークン⽅式:トークン⽅式: サービス個々に実装サービス個々に実装

►►実装コストが普及の妨げではないか実装コストが普及の妨げではないか►►提案⽅式提案⽅式 (CSS2007(CSS2007で発表で発表))

安全性の向上と実装規模の削減安全性の向上と実装規模の削減SSOSSOを拡張してトークン発⾏を実現を拡張してトークン発⾏を実現

►►実装実装: OpenID: OpenIDを採⽤を採⽤

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

2008/1/24 12

OpenIDOpenIDの概要の概要 (1)(1)

►►OpenIDOpenID Auth 2.0 (Auth 2.0 (20072007.12).12)インターネットでのシングルサインオンインターネットでのシングルサインオンURLURLががIDID ((複数ドメインでの利⽤複数ドメインでの利⽤))

►►多数のプレイヤー多数のプレイヤーAOLAOL, , livedoorlivedoor, , はてなはてな, Sun Microsystems, Sun MicrosystemsYahoo!, Yahoo Japan! (2008.2~)Yahoo!, Yahoo Japan! (2008.2~)

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

2008/1/24 13

OpenIDOpenIDの概要の概要 (2)(2)

Provider(OpenID Provider)

Provider(OpenID Provider)

Consumer(Relying Party)

Consumer(Relying Party)

利⽤者

(1) ID (URL) の提⽰

(4) 認証要

求 (OpenID Request)

(5) 利⽤者

の認証 (パス

ワード)

(6) 認証応

答 (OpenID Response)

(7) 認証応答の検証

(2) Discovery

(3) 鍵共有

OpenID Authentication 2.0, Chapter 3. Protocol Overviewhttp://openid.net/specs/openid-authentication-2_0.html

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

2008/1/24 14

OpenIDOpenID拡張を⽤いたトークン発⾏拡張を⽤いたトークン発⾏

►►OpenIDOpenID拡張領域拡張領域トークン要求トークン要求トークン応答トークン応答

►►メッセージ⽣成メッセージ⽣成ははOpenIDOpenIDに依存に依存

ConsumerConsumer

利用者利用者

ProviderProvider

OpenIDリクエスト+ トークン要求

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

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

2008/1/24 15

トークンの要求トークンの要求 (Consumer)(Consumer)

►►OpenIDOpenIDリクエストの拡張領域リクエストの拡張領域►►要求するトークンの種類を指定要求するトークンの種類を指定

ConsumerConsumer

利用者利用者

ProviderProvider

OpenIDリクエスト+ トークン要求

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

操作種別操作種別「⽣成」「取得」「⽣成」「取得」「更新」「削除」「更新」「削除」

operationoperation

操作回数操作回数「「nn回」「無制限」回」「無制限」

timestimes

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

2008/1/24 16

トークンの発⾏トークンの発⾏ (Provider)(Provider)

►►利⽤者へトークンの発⾏可否を確認利⽤者へトークンの発⾏可否を確認►►⽣成したトークンを⽣成したトークンをDBDBへ保存へ保存

ConsumerConsumer

利用者利用者

ProviderProvider

OpenIDリクエスト+ トークン要求

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

操作種別操作種別operationoperation操作回数操作回数timestimes有効期限有効期限expireexpire

ConsumerConsumerののURLURLrealmrealm利⽤者の利⽤者のIDIDuser_iduser_id

予測不可能性を持つ予測不可能性を持つ乱数乱数

tokentoken

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

2008/1/24 17

トークンの応答トークンの応答 (Provider)(Provider)

►►OpenIDOpenIDレスポンスの拡張領域に付与レスポンスの拡張領域に付与►►⽣成したトークンの値を返す⽣成したトークンの値を返す

►►メッセージの改竄防⽌メッセージの改竄防⽌HMACHMACととnoncenonceを付与を付与※※ OpenIDOpenIDの仕様の仕様

ConsumerConsumer

利用者利用者

ProviderProvider

OpenIDリクエスト+ トークン要求

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

⽣成した乱数⽣成した乱数tokentoken

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

2008/1/24 18

利⽤者発信情報の操作利⽤者発信情報の操作 (Consumer)(Consumer)

►►WebWebサービスで利⽤者発信情報を操作サービスで利⽤者発信情報を操作具体的なプロトコルは実装依存具体的なプロトコルは実装依存

►►リクエストにトークンを付加するリクエストにトークンを付加する

token+noncetoken+nonceへのへのHMACHMAC値値signaturesignature要求ごとにインクリメントする値要求ごとにインクリメントする値noncenonce取得した乱数取得した乱数tokentoken

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

2008/1/242008/1/24 1919

3. 3. 実装実装

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

2008/1/24 20

コントローラ(Consumer/Provider)

OpenIDトークン拡張

ソフトウェア構成ソフトウェア構成

►►OpenIDOpenIDライブラリライブラリ (ruby(ruby--openid) openid) を拡張を拡張►►RubyRuby on Railson Railsのコントローラから利⽤のコントローラから利⽤

OS (Ubuntu)

Ruby 1.8.5

Ruby on Rails 2.0.1

ruby-openid 2.0.0

Ruby on Rails

Ruby on Rails

Providerコントローラ

OpenIDライブラリ

トークン拡張

Consumerコントローラ

use

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

2008/1/24 21

OpenIDOpenIDトークン拡張トークン拡張

►►rubyruby--openidopenidののExtensionExtensionクラスを継承クラスを継承►►トークン要求トークン要求//応答のメッセージを定義応答のメッセージを定義

OpenIDライブラリ

OpenID::Extension

OpenID::Token::Request

OpenID::Token::Response

OpenID::Token::Message

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

2008/1/24 22

コントローラコントローラ ((ConsumerConsumer//ProviderProvider))

►►OpenIDOpenIDライブラリを使うライブラリを使う►►ConsumerConsumer, Provider, Provider双⽅に実装双⽅に実装

トークン応答をトークン応答を受信する受信する

completecomplete

トークン要求をトークン要求を⽣成する⽣成する

beginbegin

トークン応答を⽣トークン応答を⽣成する成する

decisiondecision

トークン⽣成可否トークン⽣成可否を利⽤者に確認を利⽤者に確認

indexindex

Consumerコントローラ Providerコントローラ

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

2008/1/242008/1/24 2323

4. 4. 評価評価

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

2008/1/24 24

評価の観点評価の観点

►►実装規模がどれくらい削減できるか実装規模がどれくらい削減できるか【【提案⽅式提案⽅式】】SSOSSOを拡張する場合を拡張する場合すべて個別に実装する場合すべて個別に実装する場合

既存のOpenIDライブラリ

トークン拡張

???

SSOを拡張 個別に実装

実装規模の差

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

2008/1/24 25

⽐較対象⽐較対象 ((OAuthOAuth))

►►トークン発⾏の実装のトークン発⾏の実装の11つつ►►20072007年年1212⽉にリリース⽉にリリース►►認証⽅式に依存しない仕様認証⽅式に依存しない仕様

OpenIDOpenIDの拡張領域の拡張領域を使⽤するを使⽤する

OpenIDOpenID

提案⽅式提案⽅式(SSO(SSOを拡張を拡張))

依存しない依存しない認証認証独⾃に定めた仕様独⾃に定めた仕様トークン発⾏トークン発⾏

OAuthOAuth((個別に実装個別に実装))

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

2008/1/24 26

機能の⽐較機能の⽐較

►►トークン発⾏と取得はどちらも可能トークン発⾏と取得はどちらも可能

○○○○トークンのトークンの発⾏と取得発⾏と取得

○○(MAC,(MAC, noncenonce))

○○(MAC,(MAC, noncenonce))

メッセージのメッセージの改ざん防⽌改ざん防⽌

○○

提案⽅式提案⽅式(SSO(SSOを拡張を拡張))

仕様を拡張する仕様を拡張することで実現可ことで実現可

⽤途に応じた⽤途に応じたトークン発⾏トークン発⾏((操作種別、回数操作種別、回数))

OAuthOAuth((個別に実装個別に実装))

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

2008/1/24 27

実装規模実装規模 (LOC) (LOC) での⽐較での⽐較

►►トークン発⾏の実装規模はおよそトークン発⾏の実装規模はおよそ1:11:133メッセージやメッセージやMACMAC⽣成に既存機能を利⽤⽣成に既存機能を利⽤

0100200300400500600700800

SSOを拡張(提案⽅式) 個別に実装(OAuth)

トークン発⾏

Consumer

Provider

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

2008/1/242008/1/24 2828

5. 5. 考察考察

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

2008/1/24 29

まとめまとめ

►►従来の問題点従来の問題点パスワード⽅式:パスワード⽅式: 秘密情報が第三者へ秘密情報が第三者へトークン⽅式:トークン⽅式: サービス個々に実装サービス個々に実装

►►提案⽅式提案⽅式OpenIDOpenIDを拡張してトークンを発⾏を拡張してトークンを発⾏RubyRuby上で実装上で実装独⾃実装との⽐較で独⾃実装との⽐較で11//1010以下の規模以下の規模

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

2008/1/242008/1/24 3030

ご清聴ありがとうございましたご清聴ありがとうございました

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

2008/1/242008/1/24 3131

利⽤例利⽤例

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

2008/1/24 32

ToDoToDoリストの取得リストの取得

►►ConsumerConsumerはトークンを使ってはトークンを使ってProviderProvider上の上のToDoToDoリストを取得するリストを取得する

ToDo管理サービス(Provider)

ToDo管理サービス(Provider)

ToDo取得サービス(Consumer)

ToDo取得サービス(Consumer)

利⽤者 トークン

トークン ToDoリスト

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

2008/1/24 33

サンプルサンプル (Consumer)(Consumer)

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

2008/1/24 34

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

2008/1/24 35