Copyright 2012 Open Source Solution Technology, Corp. 1 OAuth 入門 2012 年 4 月 24 日辻口鷹耶 オープンソース ソリューション テクノロジ株式会社 http://www.osstech.co.jp/
Copyright 2012 Open Source Solution Technology, Corp. 2 目次 OAuth について OAuthの背景 OAuthの歴史プロトコル概要 (OAuth2.0) OpenAM における OAuth
OAuth について Copyright 2012 Open Source Solution Technology, Corp. 3
Copyright 2012 Open Source Solution Technology, Corp. 4 OAuth の背景 ユーザ OAuth 登場以前は 写真共有サービスにある写真を印刷サービスで印刷したい 印刷サービス 写真共有サービス 写真データ
Copyright 2012 Open Source Solution Technology, Corp. 5 OAuth の背景 ユーザ 写真共有サービスへのアクセス権限を印刷サービスに委譲 ユーザと同じ権限で写真共有サービスにアクセス 印刷サービス ユーザ ID/ パスワード 写真共有サービス 写真データ
Copyright 2012 Open Source Solution Technology, Corp. 6 OAuth の背景 ユーザ 印刷サービス アクセス権限の委譲の問題点 : 後の使用のために クライアント ( 印刷サービス ) にもパスワードを保存しなければならない リソースサーバー ( 写真共有サービス ) はパスワード認証をサポートする必要がある ユーザと同じ権限のため リソース ( 写真 ) に対する権限を限定できない 情報漏えいのリスクが大きい 写真共有サービス ユーザ ID/ パスワード OAuth 登場写真データ
Copyright 2012 Open Source Solution Technology, Corp. 7 OAuth とは クライアント対してリソースオーナーが同意することで限定されたアクセス権を委譲するための認可のプロトコル パスワードを共有することなく ユーザ ( リソースオーナー ) がクライアントにリソースの使用を許可することが可能になる アクセス権限を限定できる
Copyright 2012 Open Source Solution Technology, Corp. 8 OAuth を利用すると ユーザ アクセス権限の一部を印刷サービスに委譲 限定された権限で写真共有サービスにアクセス 印刷サービス 写真共有サービス 写真データ
Copyright 2012 Open Source Solution Technology, Corp. 9 OAuth での役割 リソースオーナー リソースの所有者です リソースへのアクセスを許可します リソースサーバー リソースを保持するサーバーです 資格情報 ( アクセストークン ) を提示したアクセス要求に応答します クライアント リソースオーナーの代理としてリソースにアクセスするアプリケーションです 認可サーバー リソースオーナーの認証し アクセストークンをクライアントに発行するサーバーです
Copyright 2012 Open Source Solution Technology, Corp. 10 OAuth での役割 ( 例 :Facebook) Facebook ユーザ リソースオーナー Facebook 連携アプリ クライアント Facebook 認可サーバー リソースサーバー
Copyright 2012 Open Source Solution Technology, Corp. 11 OAuth の歴史 2007/10 OAuth Core 1.0 2009/6 OAuth Core 1.0 RevisionA OAuth1.0 2010/4 RFC 5849 The OAuth 1.0 Protocol 2010/4 The OAuth 2.0 Protocol draft-ietf-oauth-v2-00 OAuth WRAP OAuth2.0 2012/3 The OAuth 2.0 Authorization Protocol draft-ietf-oauth-v2-25
Copyright 2012 Open Source Solution Technology, Corp. 12 OAuth1.0 の課題 Eran Hammer 氏の Introducing OAuth 2.0 より 署名と複雑な認証 仕様で求められる暗号化手法が複雑で実装しにくい WEB アプリケーション以外で上手く機能しなかった 策定当初はデスクトップアプリやモバイルデバイスのフローもあったが すべて機能するようにマージした結果 機能しなかった スケールしにくい 捨てられる一時認証情報を保持しておく必要がある クライアントの認証情報とアクセストークンを同時に使用するため 認可サーバーとリソースサーバーを分けにくい
OAuth2.0 では 署名と複雑な認証 独自の暗号化は行わず HTTPSを利用してセキュリティを確保 WEBアプリケーション以外で上手く機能しなかった WEBアプリケーション以外のフローも仕様化された スケールしにくい 長期間有効なアクセストークンを発行するのではなく 一時的なトークンを発行して認可状態を継続できるようになった サーバーは認可サーバーとリソースサーバーに役割が分離された Copyright 2012 Open Source Solution Technology, Corp. 13
プロトコル概要 (OAuth2.0) Copyright 2012 Open Source Solution Technology, Corp. 14
Copyright 2012 Open Source Solution Technology, Corp. 15 基本フロー クライアント リソースオーナー 認可サーバー リソースサーバー 認可リクエスト 認可グラント 認可グラント リソースオーナーから認可を取得する 認可サーバーでクライアントを認証し 認可グラントと引き換えにアクセストークンを取得する アクセストークン アクセストークン アクセストークンを提示してリソースにアクセスする リソース
Copyright 2012 Open Source Solution Technology, Corp. 16 フロー ( 認可コード ) リソースオーナー (& ユーザエージェント ) クライアント認可サーバー リソースサーバー ブラウザ 認可コード クライアントが WEB アプリケーションのケースでは クライアントは認可サーバーを通して認可グラントを取得するフローとなっている 認可コード アクセストークン アクセストークン リソース
Copyright 2012 Open Source Solution Technology, Corp. 17 フロー ( 認可コード ) リソースオーナー (& ユーザエージェント ) クライアント認可サーバー リソースサーバー ブラウザ (D) (A) (B) (C) 認可コード (A) クライアントへのアクセス等 リソースオーナーの操作によりリソースへアクセスする必要性の発生します (B) 認可要求 認可コード アクセストークン アクセストークン クライアントはユーザーエージェントを認可サーバー ( 認可エンドポイント ) にリダイレクトします リソース
Copyright 2012 Open Source Solution Technology, Corp. 18 フロー ( 認可コード ) リソースオーナー (& ユーザエージェント ) クライアント認可サーバー リソースサーバー ブラウザ (D) (A) (B) (C) 認可コード (C) 認可 認可サーバーはリソースオーナーを認証し アクセスの許可 / 拒否をたずねます (D) 認可コード返却 認可コード アクセストークン アクセストークン アクセスが許可された場合 認可サーバーはユーザーエージェントをクライアントにリダイレクトします その際 認可コードを URL に付加します リソース
OpenAM における OAuth Copyright 2012 Open Source Solution Technology, Corp. 19
Copyright 2012 Open Source Solution Technology, Corp. 20 ロードマップ OpenAM10.0 OAuth 認証機能が追加された OpenAM10.1 OAuth プロバイダ機能が追加される
Copyright 2012 Open Source Solution Technology, Corp. 21 OAuth2.0 Authentication Module OAuth に対応しているサービスのユーザで認証できる認証モジュール OAuth2.0 に対応しているサービスの例 Facebook Google Apps Windows Live etc 取得したユーザ情報は設定により様々な取り扱いが可能 データストアの既存ユーザにマッピング匿名ユーザにマッピングセッション情報として保存データストアに保存
Copyright 2012 Open Source Solution Technology, Corp. 22 設定 OAuth プロバイダに OpenAM をアプリケーションとして登録する 例は Windows Live アカウントで認証する際のものです
Copyright 2012 Open Source Solution Technology, Corp. 23 設定 OpenAM の管理コンソールで OAuth 認証モジュールを作成する
Copyright 2012 Open Source Solution Technology, Corp. 24 設定 OAuth 認証モジュールの設定を行う OAuth プロバイダから提供されるクライアント識別子 OAuth プロバイダから提供されるクライアントのパスワード 認可コードを提供するサーバーの URL アクセストークンを提供するサーバーの URL ユーザ情報を提供するサーバーの URL ユーザ情報の要求範囲 例は Windows Live アカウントで認証する際のものです OAuth サーバーから OpenAM へリダイレクトさせる際の URL サーバー名以外は固定
Copyright 2012 Open Source Solution Technology, Corp. 25 設定 OAuth アカウントを OpenAM にマップするクラス OAuth アカウントを OpenAM にマップする際にキーとなる属性 Oauth OAuth アカウント属性を OpenAM にマップするクラス OpenAM にマップする属性 例は Windows Live アカウントで認証する際のものです
Copyright 2012 Open Source Solution Technology, Corp. 26 設定 セッションに OAuth プロバイダから取得した属性を保存するか OAuth プロバイダのプロファイルのうち Email に該当する属性 ユーザがデータストアに存在しない場合に自動でアカウントを作成するか 自動でアカウントを作成する場合にパスワードを設定しアクティベーションコードをメールで送付するか 例は Windows Live アカウントで認証する際のものです
Copyright 2012 Open Source Solution Technology, Corp. 27 設定 存在しないユーザを匿名ユーザにマップするか 匿名ユーザの名称 OAuth プロバイダのログアウトの URL ログアウトの動作を指定 例は Windows Live アカウントで認証する際のものです
Copyright 2012 Open Source Solution Technology, Corp. 28 設定 メールを送信するクラス アクティベーションコードをメールで送信する際に使われるメール設定 例は Windows Live アカウントで認証する際のものです
Copyright 2012 Open Source Solution Technology, Corp. 29 デモ OpenAM にアクセス Windows Live の認証画面へ
Copyright 2012 Open Source Solution Technology, Corp. 30 デモ アクセスの許可を問われる
Copyright 2012 Open Source Solution Technology, Corp. 31 デモ 認証成功 ここでは匿名ユーザにマップしています
Copyright 2012 Open Source Solution Technology, Corp. 32 OAuth 認証の使いどころ OAuth プロバイダは Facebook や twitter といった SNS が多い OAuth 認証モジュールの特徴は OAuth プロバイダのアカウントを OpenAM に取り込める所 不特定多数のユーザを対象としたサービスに向いている 教育機関や企業には SNS との連携は難しい
Copyright 2012 Open Source Solution Technology, Corp. 33 OAuth 認証の使いどころ OAuth 認証を利用すれば OAuth プロバイダがもつ情報を利用できる OpenAM のデータストアに持つ必要がなくなりデータの一元管理が可能になる?
Copyright 2012 Open Source Solution Technology, Corp. 34 参考文献 OAuth Community Site OAuth の仕様 http://oauth.net/ Introducting OAuth2.0 OAuth2.0 策定の背景 http://hueniverse.com/2010/05/introducing-oauth-2-0/ OAuth 2.0 Authentication (Facebook, Google, MSN, etc) OAuth 認証モジュールの概要 https://wikis.forgerock.org/confluence/display/openam/oauth+2. 0+Authentication+%28Facebook,+Google,+MSN,+etc%29
Copyright 2012 Open Source Solution Technology, Corp. 35 参考文献 OAuth 2.0 (Live Connect Developer Center) Windows LiveのOAuthの仕様 http://msdn.microsoft.com/en-us/library/live/hh243647.aspx Scopes and permissions (Live Connect Developer Center) Windows Liveのscopeの仕様 http://msdn.microsoft.com/en-us/library/live/hh243646.aspx
オープンソース ソリューション テクノロジ株式会社 http://www.osstech.co.jp/ Copyright 2012 Open Source Solution Technology, Corp. 36