Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Authlete FAPI Implementation Part 2 #fapisum - Japan/UK Open Banking and APIs Summit 2018 - July 24, 2018

2.003 visualizaciones

Publicado el

By Hideki Ikeda (Authlete)

Publicado en: Internet
  • Inicia sesión para ver los comentarios

  • Sé el primero en recomendar esto

Authlete FAPI Implementation Part 2 #fapisum - Japan/UK Open Banking and APIs Summit 2018 - July 24, 2018

  1. 1. 認可サーバーの FAPI 対応に関して Authlete Hideki Ikeda © 2018 Authlete, Inc. 1
  2. 2. Agenda • Read Only と Read and Write の判定方法 • リクエストオブジェクトのパラメーターチェック • Authlete 2.0 © 2018 Authlete, Inc. 2
  3. 3. Agenda • Read Only と Read and Write の判定方法 • リクエストオブジェクトのパラメーターチェック • Authlete 2.0 © 2018 Authlete, Inc. 3
  4. 4. FAPI 仕様群 Part 1: Read Only API Security Profile Part 2: Read and Write API Security Profile Part 3: Open Data API Part 4: Protected Data API and Schema - Read only Part 5: Protected Data API and Schema - Read and Write 認可サーバーを 実装する上で重要 © 2018 Authlete, Inc. 4
  5. 5. Part 1: Read Only API Security Profile 5.2.2. Authorization server • コンフィデンシャルクライアントのサポートが必須 • パブリッククライアントに対して PKCE の実施が必須 • 認可リクエストに redirect_uri パラメーターが必須 etc... Part 2: Read and Write API Security Profile 5.2.2. Authorization server (Part 1 の事項に加えて) • リクエストオブジェクトのサポートが必須 • response type は “code id_token” もしくは “code id_token token” でなければならない • Holder-of-key のメカニズムとして OAUTB あるいは MTLS のサポートが必須 etc... Read Only と Read and Write で認可サーバーの振る舞いが異なる © 2018 Authlete, Inc. 5
  6. 6. リクエスト 認可サーバー (FAPI 対応済) このリクエストは Read Only の仕様に従って処理? それとも Read and Write の仕 様に従って処理? クライアントアプリ © 2018 Authlete, Inc. 6
  7. 7. Q: 認可サーバーは Read Only なのか Read and Write なのかをどう判定するの か? 仕様書には特に明記されていない スコープを利用して判定する! © 2018 Authlete, Inc. 7
  8. 8. スコープに属性 (key-value) を紐づけておく read_account key value fapi r … 口座情報を読み取るためのスコープ スコープの属性群 © 2018 Authlete, Inc. 8 FAPI Read Only に 対応するものとする
  9. 9. 認可サーバー (FAPI 対応済) 1. read_account スコープが “fapi : r“ 属性に紐づくと判る 2. “fapi : r“ 属性は Read Only に対 応すると判る 3. このリクエストを Read Only の 仕様に従って処理する クライアントアプリ 認可リクエスト https://example.com/authorization ?response_type=code+id_token &client_id=123456789 &scope=openid+read_account … © 2018 Authlete, Inc. 9
  10. 10. Authlete でのスコープの属性定義 属性のキー 属性の値 対応するケース fapi r FAPI Read Only fapi rw FAPI Read and Write 上記以外の場合 OpenID Connect の authentication リクエスト © 2018 Authlete, Inc. 10
  11. 11. Agenda • Read Only と Read and Write の判定方法 • リクエストオブジェクトのパラメーターチェック • Authlete 2.0 © 2018 Authlete, Inc. 11
  12. 12. FAPI - Part 2: Read and Write API Security Profile 5.2.2 Authorization server … In addition, the authorization server, for the write operation, 10. shall require that all parameters are present inside the signed request object; 「全てのパラメーターが署名されたリクエストオブジェクト内に存在する」 ということを認可サーバーは要求するものとする © 2018 Authlete, Inc. 12
  13. 13. https://example.com/authorization ?response_type=code+id_token &client_id=123456789 &scope=openid &request=eyJhbGciOiJFUzI… … 認可リクエスト { "response_type": "code id_token", "client_id": "123456789", "scope": "openid", … } リクエストオブジェクトをデコードして 得られる JSON リクエストオブジェクトの中を覗いて 各リクエストパラメーターの名前と値が合致することを 文字列比較でチェック! 検証: 全てのパラメーターがリクエストオブジェクト内に存在する © 2018 Authlete, Inc. 13
  14. 14. 本当にそれでいいの? © 2018 Authlete, Inc. 14
  15. 15. https://example.com/authorization ?response_type=code+id_token &client_id=123456789 &scope=openid &request=eyJhbGciOiJFUzI… &claims=%7B%22key1%22%3A% 22value1%22%2C%22key2%22% 3A%22value2%22%7D%0D%0A … 認可リクエスト {"key1":"value1","key2":"value2"} デコード 二つの JSON が等しいかどうかを 文字列比較でチェック??? { "response_type": "code id_token", "client_id": "123456789", "scope": "openid", "claims": {"key1":"value1","key2":"value2"} … } リクエストオブジェクトをデコードして 得られる JSON © 2018 Authlete, Inc. 15
  16. 16. Bad case1: スペースが入ってたら {"key1":"value1","key2":"value2"} {"key1":"value1”, "key2":"value2”} 等しい JSON と判定すべきだが 文字列比較では異なる値としてみなされてしまう © 2018 Authlete, Inc. 16
  17. 17. Bad case2: 列挙順序が異なっていたら {"key1":"value1","key2":"value2"} {"key2":"value2”,"key1":"value1”} 等しい JSON と判定すべきだが 文字列比較では異なる値としてみなされてしまう © 2018 Authlete, Inc. 17
  18. 18. じゃあどうやるの? © 2018 Authlete, Inc. 18
  19. 19. {"key1":"value1","key2":"value2"} key1:value1 子ノード key2:value2 子ノード 親ノード ダイジェスト オブジェクトに マッピング 比較 key1:value1 子ノード key2:value2 子ノード 親ノード ノードをキーで 並び替え {"key2":"value2","key1":"value1"} key2:value2 子ノード key1:value1 子ノード 親ノード ダイジェスト オブジェクトに マッピング key1:value1 子ノード key2:value2 子ノード 親ノード ノードをキーで 並び替え © 2018 Authlete, Inc. 19
  20. 20. FAPI に関する実装を振り返って • 悩むのが多かったのは仕様書に書かれていない部分 • 今回提示した方法が唯一の正解というわけではないの で参考程度に © 2018 Authlete, Inc. 20
  21. 21. Agenda • Read Only と Read and Write の判定方法 • リクエストオブジェクトのパラメーターチェック • Authlete 2.0 © 2018 Authlete, Inc. 21
  22. 22. ✓BaaS (Backend as a Service)として利用可能であり 導入・運用が容易 ✓OAuth 2.0 / OIDC関連仕様を網羅した実装 ✓ユーザーからのフィードバックに基づいて 仕様の先を行く機能群を実装 ✓関連仕様の専門家集団が設計・運用 © 2018 Authlete, Inc. OAuth/OIDC実装者の課題洞察から誕生した 「認可サーバ構築用APIサービス」 22
  23. 23. © 2018 Authlete, Inc. ワールドワイドに多数の利用実績 & 有力企業様も活用 採用実績例 コンシューマーIAMソリューション 「Uni-ID Libra」の認可エンジンとして採用 ユーザープロファイル(地域別) Grand Prize Winner ヘルスケアサービス「ルナルナ」等で採用 API 公開基盤「Resonatex」 に採用 銀行APIの認可基盤として採用 FinTech企業との連携PoCにおいて活用 IoTプラットフォームにて採用 各種サービスの認可サーバとして採用 IBM 賞 受賞歴 49% 21% 14% 12% 3% 1% Japan North America Europe Asia Central/South America Africa 23
  24. 24. Authlete 2.0 新機能 New! FAPI モード © 2018 Authlete, Inc. 24
  25. 25. Authlete 2.0 新機能 New! スコープ属性管理機能 © 2018 Authlete, Inc. 25
  26. 26. Authlete 2.0 新機能 New! 新規クライアント認証方式の追加 © 2018 Authlete, Inc. 26
  27. 27. Authlete 2.0 新機能 New! PKI 証明書チェーン検証機能 © 2018 Authlete, Inc. 27
  28. 28. Authlete 2.0 新機能 • その他便利な API の新規追加, etc… © 2018 Authlete, Inc. 28
  29. 29. Thank you. © 2018 Authlete, Inc. 29

×