OpenID Connect 概要 (2013年9月)
Upcoming SlideShare
Loading in...5
×
 

OpenID Connect 概要 (2013年9月)

on

  • 3,005 views

 

Statistics

Views

Total Views
3,005
Views on SlideShare
2,833
Embed Views
172

Actions

Likes
10
Downloads
66
Comments
0

4 Embeds 172

http://www.openid.or.jp 156
http://openid.allianceport.jp 13
http://feedly.com 2
http://openid.or.jp 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 概要 (2013年9月) OpenID Connect 概要 (2013年9月) Presentation Transcript

  • OpenIDファウンデーション・ジャパン 2013年9月 OpenID Connect 概要
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID Connectとは http://openid.net/connect OAuth 2.0 仕様をベースに「アイデンティティ 層」を拡張した、OpenIDの次期バージョン 1 • OP(認可サーバー)へのユーザー認証の一元化 RP(クライアント)間の シングル・サインオン • OP側へのユーザーのクレデンシャル(パスワードなど) 管理の一元化 RP側のセキュリティ 向上と管理負荷の低減 • OPからのユーザー属性情報取得 RPでの新規ユーザー 登録の容易化 • エンドユーザーの認証とAPIアクセス認可の一体化ユーザー利便性の向上
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID Connectは「OpenIDをOAuth 2.0ベースに 作り直す」というだけではない  既存のID連携仕様であ る SAMLやWS- Federationの実世界で の適用パターン、そし て事業者独自のアイデ ンティティAPI (Facebook Connectな ど) を分析し、仕様化 したものとなっている 2 Source: http://civics.com/openid-connect-webinar/ OpenID Connectの系図
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID Connectによるフェデレーションの中心は 「IDトークン」  エンドユーザの関与の元、 RPがOPに「IDトークン」 というデータを要求する (認可リクエスト)  OPはエンドユーザーの認証 と、情報およびサービス 提供に関する同意を確認 し、IDトークンをRPに返却  RPはこの「IDトークン」を 用いてエンドユーザーを 識別し、アクセス可否を 行う 3
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. IDトークンの中身  OPにおけるユーザ認証イベントの情報  「このエンドユーザーは○○で、何時何分に、こういう方法で認証を受け、認証レ ベルは○で、…」  RPは主に、IDトークンに含まれる以下のクレーム(OPがユーザーに関して表 明する情報)を用いて、エンドユーザーのアクセス認可を行う  エンドユーザーを識別する値(識別子)  IDトークンの有効期限  ユーザ認証を実施した日時  認証コンテクスト・クラス・リファレンス  認証手段リファレンス  IDトークンにはこの他に ユーザー属性が含まれる こともある 4
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. RPからOPへのIDトークンの要求  RPは認可リクエストに際し、IDトークンに含めてほしいクレームや、IDトー クン生成にあたりどのような認証イベントを求めるかを指定  OPはその指定を考慮した上でIDトークンを返却  指定可能な内容の例  クレームのセット  認証および同意確認の際のUI  認証や同意の再実行の要否  エンドユーザを明示的に認証してからの経過時間  UIやクレームのロケール  OPがエンドユーザを 認証する際のヒント  認証コンテクスト・ クラス・リファレンスの値 5
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. プロトコル・フロー (1): 認可コードフロー IDトークンをRP/OP間で直接授受  フロー概要  RPからOPへエンドユーザを経由して 認可リクエストを送信  OPが「認可コード」と呼ばれる値を エンドユーザ経由でRPに返却  RPがその認可コードをOPに送信して IDトークン(ならびにアクセストーク ン)取得  特徴  IDトークンのやりとり(トークン・ リクエスト/レスポンス)がRPとOPとの 直接通信によって行われれる ▪ OPによるIDトークンへの署名は基本的には 不要となり、RP側での署名検証処理も発生 しない 6
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. プロトコル・フロー (2): Implicitフロー OPがIDトークンをエンドユーザ経由でRPに返却  フロー概要  エンドユーザ経由でOPがIDトークン (ならびにアクセストークン)をRPに 返却  特徴  IDトークンの授受に関し、RPからOP への通信が発生しない ▪ RPからOPへの直接通信が行えない環境 にも適用することが可能 ▪ OPによるIDトークンへの署名、および RP側での署名検証処理は必須  OPはIDトークンをURLフラグメントに エンコードしてRPに返却 ▪ RPはWebブラウザになんらかのスクリプ トをダウンロードさせて、そのスクリプ トによってフラグメントからIDトークン を抽出し、Webサーバー・アプリケー ションに送信させることとなる 7
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. ユーザー属性のリクエスト  認可リクエストのscopeパラメーターを用いて「クレームの セット」を指定する方法が一般的  OpenID Connectではクレームのセットとして以下を定義  profile(既定のプロファイル)、email(メールアドレス)、 address(住所)phone(電話番号)  OPが独自に定義した「ユーザ属性のセット」をRPが指定する ことも可能 8 scope=openid profile email http://example.com/employeeAttrs 仕様にて定義 OPが独自に定義
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. ユーザー属性の提供  OpenID Connect仕様では二通りの方法を定義  RPに返却するIDトークンに含める(前述)  RPがアクセス可能なUserInfoエンドポイントを用意する  UserInfoエンドポイント  OPがRPにユーザー情報を提供するためのAPI  OAuth 2.0仕様の「保護されたリソース(Protected Resource)」 ▪RPは、認可リクエストの際にIDトークンと同時にOPから取得 したアクセストークンを用いて、このUserInfoエンドポイント にアクセスする  UserInfoエンドポイントは、ユーザー情報を、通常は JSON形式にてRPに返却する 9 RP OP
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID Connectの今後のロードマップ 現在Implementer’s Draftが公開中  今後最終仕様に OpenID Connectを実装した製品・サービスの例 Yahoo! JAPAN (YConnect)、日本経済新聞社 (日経ID)、東急電鉄、Google、PayPal (Log In with PayPal)、野村総合研究所(Uni-ID)、 Ping Identity (PingFederate)、Gluu (OX)、Layer 7 10
  • Backup Slides
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID Connect仕様はモジュール化されており、 用途に応じて取捨選択が可能 Webクライアント向けのシン プルな仕様。 Basic Client Profileは OAuth 2.0認可コードフロー、 Implicit Client Profileは同 Implicitフローをベースに拡 張。 12
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID ConnectBasic ClientProfileに基づく認証結果の要求・取得の例 (*) 1. WebブラウザからRPの「ログイン」ボタンを クリック 13 認可 サーバー クライアント 認可 エンドポイント OpenID プロバイダ OpenID リライング・ パーティ (RP) example.comの IDでログイン! <a href="https://server.example.com/authorize?grant _type=code&scope=openid&client_id=3214244&state=af1 Ef">example.comのIDでログイン!</a> (*) 本ページ以降の例示は http://www.thread- safe.com/2012/07/how-simple-is-openid-connect- basic.html を元に作図 トークン エンドポイント
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID ConnectBasic Client Profileに基づく認証結果の要求・取得の例 2. WebブラウザがOPに認可リクエストを送信 14 認可 サーバー クライアント OpenID プロバイダ (OP) OpenID リライング・ パーティ (RP) GET /authorize?grant_type=code&scope=openid&client_ id=3214244&state=af1Ef HTTP/1.1 Host: server.example.com 認可 エンドポイント トークン エンドポイント
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID ConnectBasic Client Profileに基づく認証結果の要求・取得の例 3. OPがユーザーを認証 15 認可 サーバー クライアント OpenID プロバイダ (OP) OpenID リライング・ パーティ (RP) 何らかの方法でユーザーを 認証 例: ID/パスワード、OTP、 クッキー、… 認可 エンドポイント トークン エンドポイント
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID ConnectBasic Client Profileに基づく認証結果の要求・取得の例 4. OPがWebブラウザをRPにリダイレクト 16 認可 サーバー クライアント OpenID プロバイダ (OP) OpenID リライング・ パーティ (RP) Location: https://client.example.com/cb?code=8rFowi dZfjt&state=af1Ef OPがcodeを 返却 認可 エンドポイント トークン エンドポイント
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID Connect Basic Client Profileに基づく認証結果の要求・取得の例 4. WebブラウザがRPに、OPから受け取った 認可コードを送信 17 認可 サーバー クライアント OpenID プロバイダ (OP) OpenID リライング・ パーティ (RP) GET /cb?code=8rFowidZfjt&state=af1Ef HTTP/1.1 Host: client.example.com Webブラウザ 経由でRPに codeが渡る 認可 エンドポイント トークン エンドポイント
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID Connect Basic Client Profileに基づく認証結果の要求・取得の例 5. RPがOPに認可コードを送信しIDトークンを リクエスト 18 認可 サーバー クライアント OpenID プロバイダ (OP) OpenID リライング・ パーティ (RP) GET /token?code=8rFowidZfjt HTTP/1.1 Host: server.example.com Authorization: Basic … codeを送信 認可 エンドポイント トークン エンドポイント
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID Connect Basic Client Profileに基づく認証結果の要求・取得の例 6. OPがRPに、認可コードにひもづくIDトークン他 を返却 19 認可 サーバー クライアント OpenID プロバイダ (OP) OpenID リライング・ パーティ (RP) { "access_token": "SlAV32hkKG", "token_type": "Bearer", "refresh_token": "8xLOxBtZp8", "expires_in": 3600, "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. eyJpc3MiOiJodHRwczovL3NlcnZlci5leGFtcGxlLmNvbSIsInVz ZXJfaWQiOiIyNDgyODk3NjEwMDEiLCJhdWQiOiJodHRwOi 8vY2iwiZXhwIjoxxpZW50LmV4YW1wbGUuY29tIMzExMjgxOTcwfSA. eDesUD0vzDH3T1G3liaTNOrfaeWYjuRCEPNXVtaazNQ" } アクセス・ トークン (*) IDトークン (*) UserInfoやその他のAPIアクセスに 使用。本例では省略 認可 エンドポイント トークン エンドポイント
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID Connect Basic Client Profileに基づく認証結果の要求・取得の例 7. RPがIDトークンを復号し、OPが返却した ユーザー識別子を取得 20 { "iss": "https://server.example.com", “sub": "248289761001", "aud": "3214244", "iat": 1311195570, "exp": 1311281970 } eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. eyJpc3MiOiJodHRwczovL3NlcnZlci5leGFtcGxlLmNvbSIsInVz ZXJfaWQiOiIyNDgyODk3NjEwMDEiLCJhdWQiOiJodHRwOi 8vY2iwiZXhwIjoxxpZW50LmV4YW1wbGUuY29tIMzExMjgxOTcwfSA. eDesUD0vzDH3T1G3liaTNOrfaeWYjuRCEPNXVtaazNQ <?php $res = json_decode($response, true); $id_token = $res['id_token']; $id_array = mb_split(".", $id_token); $id_body = base64url_decode($id_array[1]); ?> RP側での復号処理 (例はPHPによる実装例。 ピリオド “.” で3分割し、2番目の パートをbase64urlデコード) 認証結果 (JWT Claims Set) RPが受け取った id_tokenの値 認証結果 ( base64urlエンコードされた JWT Claims Set) subの値 = OPからRPに 払い出された ユーザー識別子
  • Copyright 2013 OpenID Foundation Japan - All Rights Reserved. OpenID ConnectBasic ClientProfileに基づく認証結果の要求・取得の例 8. RPがWebブラウザにコンテンツを返却 21 認可 サーバー クライアント OpenID プロバイダ (OP) OpenID リライング・ パーティ (RP) OPから払い出されたユーザー識別子: 248289761001 にひもづくユーザー がすでに存在するか? Yes → 「ようこそ、太郎さん!」 No → 「既存ユーザーとのひもづけ or 新規登録をお願いします」 認可 エンドポイント トークン エンドポイント