Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

831 views

Published on

By Hideki Ikeda (Authlete)

Published in: Internet
  • Be the first to comment

  • Be the first to like this

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

×