SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
Authlete FAPI Implementation Part 2 #fapisum - Japan/UK Open Banking and APIs Summit 2018 - July 24, 2018
Report
FinTechLabs.io
Follow
FinTechLabs.io
Jul. 27, 2018
•
0 likes
•
2,802 views
1
of
29
Authlete FAPI Implementation Part 2 #fapisum - Japan/UK Open Banking and APIs Summit 2018 - July 24, 2018
Jul. 27, 2018
•
0 likes
•
2,802 views
Report
Internet
By Hideki Ikeda (Authlete)
FinTechLabs.io
Follow
FinTechLabs.io
Recommended
Open Banking: The View from a Japanese Startup (Authlete) #fapisum - Japan/UK...
FinTechLabs.io
746 views
•
22 slides
FAPI / Open Banking Test Suite #fapisum - Japan/UK Open Banking and APIs Summ...
FinTechLabs.io
291 views
•
36 slides
Trust Frameworks and Open Banking #fapisum - Japan/UK Open Banking and APIs S...
FinTechLabs.io
333 views
•
17 slides
Issues towards Open Banking ecosystem and how OpenID Foundation tackles them ...
FinTechLabs.io
181 views
•
30 slides
Banking API Trends in Japan #fapisum - Japan/UK Open Banking and APIs Summit ...
FinTechLabs.io
410 views
•
41 slides
Open Banking: Lessons from the UK #fapisum - Japan/UK Open Banking and APIs S...
FinTechLabs.io
947 views
•
24 slides
More Related Content
More from FinTechLabs.io
Authlete FAPI Implementation Part 1 #fapisum - Japan/UK Open Banking and APIs...
FinTechLabs.io
11.2K views
•
15 slides
Open Banking UK “Identity Product” Internals #fapisum - Japan/UK Open Banking...
FinTechLabs.io
2.8K views
•
17 slides
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FinTechLabs.io
3K views
•
44 slides
Basics: OAuth and OpenID Connect #fapisum - Japan/UK Open Banking and APIs Su...
FinTechLabs.io
3.1K views
•
76 slides
Trends in Banking APIs #fapisum - Japan/UK Open Banking and APIs Summit 2018 ...
FinTechLabs.io
3K views
•
20 slides
Open Banking for Developers #fapisum - Japan/UK Open Banking and APIs Summit ...
FinTechLabs.io
3.1K views
•
21 slides
More from FinTechLabs.io
(6)
Authlete FAPI Implementation Part 1 #fapisum - Japan/UK Open Banking and APIs...
FinTechLabs.io
•
11.2K views
Open Banking UK “Identity Product” Internals #fapisum - Japan/UK Open Banking...
FinTechLabs.io
•
2.8K views
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FinTechLabs.io
•
3K views
Basics: OAuth and OpenID Connect #fapisum - Japan/UK Open Banking and APIs Su...
FinTechLabs.io
•
3.1K views
Trends in Banking APIs #fapisum - Japan/UK Open Banking and APIs Summit 2018 ...
FinTechLabs.io
•
3K views
Open Banking for Developers #fapisum - Japan/UK Open Banking and APIs Summit ...
FinTechLabs.io
•
3.1K views
Authlete FAPI Implementation Part 2 #fapisum - Japan/UK Open Banking and APIs Summit 2018 - July 24, 2018
1.
認可サーバーの FAPI 対応に関して Authlete Hideki Ikeda ©
2018 Authlete, Inc. 1
2.
Agenda • Read Only
と Read and Write の判定方法 • リクエストオブジェクトのパラメーターチェック • Authlete 2.0 © 2018 Authlete, Inc. 2
3.
Agenda • Read Only
と Read and Write の判定方法 • リクエストオブジェクトのパラメーターチェック • Authlete 2.0 © 2018 Authlete, Inc. 3
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.
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.
リクエスト 認可サーバー (FAPI 対応済) このリクエストは Read
Only の仕様に従って処理? それとも Read and Write の仕 様に従って処理? クライアントアプリ © 2018 Authlete, Inc. 6
7.
Q: 認可サーバーは Read
Only なのか Read and Write なのかをどう判定するの か? 仕様書には特に明記されていない スコープを利用して判定する! © 2018 Authlete, Inc. 7
8.
スコープに属性 (key-value) を紐づけておく read_account key
value fapi r … 口座情報を読み取るためのスコープ スコープの属性群 © 2018 Authlete, Inc. 8 FAPI Read Only に 対応するものとする
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.
Authlete でのスコープの属性定義 属性のキー 属性の値
対応するケース fapi r FAPI Read Only fapi rw FAPI Read and Write 上記以外の場合 OpenID Connect の authentication リクエスト © 2018 Authlete, Inc. 10
11.
Agenda • Read Only
と Read and Write の判定方法 • リクエストオブジェクトのパラメーターチェック • Authlete 2.0 © 2018 Authlete, Inc. 11
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.
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.
本当にそれでいいの? © 2018 Authlete,
Inc. 14
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.
Bad case1: スペースが入ってたら {"key1":"value1","key2":"value2"}
{"key1":"value1”, "key2":"value2”} 等しい JSON と判定すべきだが 文字列比較では異なる値としてみなされてしまう © 2018 Authlete, Inc. 16
17.
Bad case2: 列挙順序が異なっていたら {"key1":"value1","key2":"value2"}
{"key2":"value2”,"key1":"value1”} 等しい JSON と判定すべきだが 文字列比較では異なる値としてみなされてしまう © 2018 Authlete, Inc. 17
18.
じゃあどうやるの? © 2018 Authlete,
Inc. 18
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.
FAPI に関する実装を振り返って • 悩むのが多かったのは仕様書に書かれていない部分 •
今回提示した方法が唯一の正解というわけではないの で参考程度に © 2018 Authlete, Inc. 20
21.
Agenda • Read Only
と Read and Write の判定方法 • リクエストオブジェクトのパラメーターチェック • Authlete 2.0 © 2018 Authlete, Inc. 21
22.
✓BaaS (Backend as
a Service)として利用可能であり 導入・運用が容易 ✓OAuth 2.0 / OIDC関連仕様を網羅した実装 ✓ユーザーからのフィードバックに基づいて 仕様の先を行く機能群を実装 ✓関連仕様の専門家集団が設計・運用 © 2018 Authlete, Inc. OAuth/OIDC実装者の課題洞察から誕生した 「認可サーバ構築用APIサービス」 22
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.
Authlete 2.0 新機能 New!
FAPI モード © 2018 Authlete, Inc. 24
25.
Authlete 2.0 新機能 New!
スコープ属性管理機能 © 2018 Authlete, Inc. 25
26.
Authlete 2.0 新機能 New!
新規クライアント認証方式の追加 © 2018 Authlete, Inc. 26
27.
Authlete 2.0 新機能 New!
PKI 証明書チェーン検証機能 © 2018 Authlete, Inc. 27
28.
Authlete 2.0 新機能 •
その他便利な API の新規追加, etc… © 2018 Authlete, Inc. 28
29.
Thank you. © 2018
Authlete, Inc. 29