Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OpenID Connect, December 2011

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

OpenID Connect, December 2011

Prepared for the 8th Information Security Technology Trend Research Task Group Meeting, December 22, 2011

http://www.ipa.go.jp/security/outline/committee/isec_tech1.html

Avatar for Tatsuo Kudo

Tatsuo Kudo

December 22, 2011
Tweet

More Decks by Tatsuo Kudo

Other Decks in Technology

Transcript

  1. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    更新履歴 Dec/22/2011 初版 Jan/17/2012 SlideShareにて公開 OpenID Connect Protocol Suiteを修正 ▪ 「公式マップ」(左の図)をJan/12/2012の版に差し替え ▪ 私的解釈(右の図) を修正 (Thanks to 崎村さん) 1
  2. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    アジェンダ 2011年7月から12月にかけての技術動向を概観 OpenID Connect ▪ https://openid.net/connect/ 2
  3. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    OpenID Connectとは http://openid.net/connect OpenIDの次期バージョン OAuth 2.0 仕様をベースに拡張 「シンプルな認証結果と属性情報の取得」 (後述) の範囲であれば、 一般的なOAuth 2.0認可 + API アクセスのフローとほぼ同様 メッセージ形式にJSONを採用 加えてJWT (JSON Web Token) を活用することにより、署 名と暗号化をサポート 仕様のモジュラー化 かんたんなことをシンプルにする一方、複雑なことも実現可能に 3
  4. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    OpenID 2.0 4 OpenIDプロバイダ(OP) RPのリクエストに基づきユーザー認証を行い その認証結果と属性情報を提供 OpenIDリライング・パーティ(RP) OPに認証結果や属性情報をリクエストし その情報をもとにユーザーにサービスを提供 ユーザー RPへのアクセスを試みる過程においてOPから RPへの認証結果と属性情報の提供を許可 PCのWebブラウザ 1. 「OPの IDで ログイン」 2. OPの場所を特定し、リクエスト/ レスポンスに用いる署名鍵を交換 4. ユーザー認証の実施と 認証結果と属性情報の 提供可否の確認 6. アクセスを 許可し サービスを 提供 3. 認証リクエスト (ブラウザを リダイレクト) 5. 認証レスポンス (ブラウザを リダイレクト)
  5. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    OpenIDプロバイダ(OP) RPのリクエストに基づきユーザー認証を行い その認証結果と属性情報を提供 Web API (ID情報、lセッション管理、 ソーシャル、決済、 アクティビティ、…) OpenID 2.0の課題 (≒ OpenID Connectの注力分野) 5 OpenIDリライング・パーティ(RP) OPに認証結果や属性情報をリクエストし その情報をもとにユーザーにサービスを提供 ユーザー RPへのアクセスを試みる過程においてOPから RPへの認証結果と属性情報の提供を許可 PCのWebブラウザ 1. 「OPの IDで ログイン」 2. OPの場所を特定し、リクエスト/ レスポンスに用いる署名鍵を交換 3. 認証リクエスト (ブラウザを リダイレクト) 4. ユーザー認証の実施と 認証結果と属性情報の 提供可否の確認 5. 認証レスポンス (ブラウザを リダイレクト) 6. アクセスを 許可し サービスを 提供 「携帯電話のWebブラウザや、 Webブラウザ以外の ユーザー・エージェント (ネイティブ・アプリケーションや JavaScriptクライアントなど) にも対応したい」 「認証リクエスト/ レスポンスに対して、 公開鍵を用いて 暗号化・署名したい」 「OP/RP間の設定をもっとかんたんに、 もしくは省略したい」 「OPの提供する 他のAPIと かんたんに 組み合わせたい」
  6. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    OpenID Connectのフロー(概要) 6 認可 サーバー ユーザー 情報 (クレーム) 3. ユーザー 認証・認可 クライアント 7. ユーザー属性 提供要求 クレーム プロバイダ クレーム ソース UserInfo エンドポイント エンドユーザー 認可 エンドポイント 1. サービスに アクセス OpenID プロバイダ チェックID エンドポイント 3 1 6 2 4 5 6(オプション). 検証結果返却 2. トークン 取得要求 4. アクセス・ トークンとID トークンを返却 5(オプション): IDトークン検証 要求 7 8 8. ユーザー 属性提供 9.(オプション): ユーザー属性 提供要求 9 10 10 (オプショ ン): ユーザー 属性提供 11. サービス 提供 11
  7. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    Underpinnings OpenID Connect Protocol Suite 「公式マップ」 http://openid.net/connect …が、以下のほうが実態に近 い気がする 7 Bindings •OpenID Connect Standard •Other Vendor Proprietary / Community Specific Bindings Endpoints and associated message formats •OpenID Connect Messages Optional Functionality •OpenID Connect Discovery •OpenID Connect Dynamic Client Registration •OpenID Connect Session Management •Other Vendor Proprietary / Community Specific Functionality Profiles •OpenID Connect Basic Client •Other Vendor Proprietary / Community Specific Profiles
  8. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    OpenID Connect のユースケース 1. シンプルな認証結果と属性情報の取得 OpenID Connectフローの処理の結果、クライアントは認可サーバーから id_tokenとアクセス・トークンを得る 認証結果: id_tokenを検証し取得 id_token ▪ JWT(JSON Web Token)形式 ▪ JWS (JSON Web Signature)により署名 ▪ user_id、auth_timeなどが含まれている 検証方法 ▪ 取得したクライアント自身がid_tokenを検証 ▪ 外部の「Check IDエンドポイント」にid_tokenを送付し、検証を依頼 属性情報: アクセス・トークンを用いて取得 クライアントはフロー開始時(認可リクエスト)のscopeに、取得したい「クレーム」を指定 ▪ 指定可能なクレームはprofile (一般的なユーザー属性(address, emailを除く)), address (住所), email (メールアドレス) の3種類(複数同時に指定可能) 取得したアクセス・トークンを用いてUserInfoエンドポイントにアクセスし、属性を取得 ▪ JSON形式 8
  9. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    OpenID Connect のユースケース 2. 仕様に規定されている以外の属性の取得 認可リクエストのscopeに独自 の「クレーム」を指定 さらに認可リクエストに「リクエ スト・オブジェクト」を付加し、要 求する属性を指定 リクエスト・オブジェクト 認可サーバーへのリクエスト・パ ラメータをJWT化したもの 認可リクエストへの付加方法 ▪ requestパラメータの値としてリクエ スト・オブジェクトを指定 ▪ request_uriパラメータの値として、 リクエスト・オブジェクトの場所を指 定 例: もし「edupersonクレーム」 を作る場合 scopeにedupersonを指定 リクエスト・オブジェクトとして以下 の内容を指定 UserInfoにアクセスすることによ り、以下の属性を取得 9 { "user_id": null, "urn:mace:dir:attribute-def:cn" : {"optional": true}, "urn:mace:dir:attribute-def:sn" : {"optional": true}, "urn:mace:dir:attribute-def:givenName" : {"optional": true}, "urn:mace:dir:attribute-def:mail" : null } { "user_id": "248289761001", "urn:mace:dir:attribute-def:cn" : "John Bradley", "urn:mace:dir:attribute-def:sn" : "Bradley", "urn:mace:dir:attribute-def:givenName" : "John", "urn:mace:dir:attribute-def:mail" "[email protected]" }
  10. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    OpenID Connect のユースケース 3. ユーザー認証の保証レベルの指定 認可リクエストに付加する 「リクエスト・オブジェクト」に、 要求する保証レベルを指定  ユーザー認証後得られた id_tokenに、保証レベルが 含まれる 例 リクエスト・オブジェクトとして 以下の内容を指定 ユーザー認証後取得した id_tokenに以下の内容が含ま れる 10 "id_token": { "claims": { "auth_time": null, “acr": { "values":["2"] } }, "max_age": 86400, } “acr": {"values":["3","2"]}
  11. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    OpenID Connect のユースケース 4. UserInfoエンドポイントの外部にあるクレームの取得 UserInfoから提供する外部のクレームとして、「集約 (aggregated)クレーム」と「分散(distributed)クレーム」を規 定 集約(aggregated)クレーム UserInfoエンドポイントから提供されるクレームの中に、外部クレー ムの「実体」が含まれる ▪ その「実体」はJWT形式に変換して含まれることにより、他のクレームと区別さ れる 分散(distributed)クレーム UserInfoエンドポイントから提供されるクレームの中に、外部クレー ムを取得するための情報が含まれる ▪ 場合によっては、取得するための情報としてアクセス・トークンが指定されてい る 11
  12. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    OpenID Connect のユースケース 5. クライアントによるOpenIDプロバイダのディスカバリ OpenID Connect Discovery エンドユーザーが指定した識別子をもとに、OpenIDリライング・パー ティがOpenIDプロバイダを発見する仕組みを定義 ▪ OpenID 2.0にて実現されていた機能と同様 識別子は以下のどちらかであるべきである (SHOULD) ▪ メールアドレス or URL 識別子を元にOpenIDリライング・パーティは、SWD (Simple Web Discovery) により、OpenIDプロバイダを発見する 12 GET /.well-known/simple-web-discovery?principal=joe%40example.com&service=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer HTTP/1.1 Host: example.com HTTP/1.1 200 OK Content-Type: application/json { "locations":["https://server.example.com"] }
  13. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    OpenID Connect のユースケース 6. クライアント情報の動的な登録 OpenID Connect Dynamic Client Registration OpenIDプロバイダとOpenIDリライング・パーティとが、動的に信頼 関係を確立する仕組みを定義 ▪ OpenID 2.0にて実現されていた機能と同様 OpenIDリライング・パーティがOpenIDプロバイダの「クライアント登 録エンドポイント」に、自身を登録するようリクエスト ▪ 成功した場合、レスポンスとしてclient_id/client_secretが返却される 13 POST /connect/register HTTP/1.1 Accept: application/x-www-form-urlencoded Host: server.example.com type=client_associate &redirect_uris=https://client.example.com/callback%20https://client.exam ple.com/callback2 &logo_url=https://client.example.com/logo.png &user_id_type=pairwise &sector_identifier_url=https://othercompany.com/file_of_redirect_uris_for _our_sites.js &token_endpoint_auth_type=client_secret_basic &jwk_url=https://client.example.com/my_rsa_public_key.jwk &userinfo_encrypted_response_algs=RSA1_5%20A128CBC HTTP/1.1 200 OK Content-Type: application/json Cache-Control: no-store { "client_id":"SlAV32hkKG", "client_secret":"cf136dc3c1fd9153029bb9c6cc9ecead918bad9887fce6c9 3f31185e5885805d", "expires_in":3600 }
  14. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    OpenID Connect のユースケース 7. セッション管理 OpenID Connect Session Management OpenIDプロバイダ(認可サーバー)と、その認可サーバーをユー ザー認証に利用するOpenIDリライング・パーティ(サードパーティ)と の間での、セッションのライフサイクル管理(生成、利用、破棄)の仕 組みを定義 id_tokenを利用 14
  15. Copyright © 2011 Nomura Research Institute, Ltd. All Rights Reserved.

    OpenID Connectの今後のロードマップ 2011/12/24 ~ 2012/02/06: Implementer’s Drafts Review 2012/02/14 (予定): Official Implementer’s Draft その後、最終仕様に 15