SlideShare une entreprise Scribd logo
1  sur  29
認可サーバーの
FAPI 対応に関して
Authlete
Hideki Ikeda
© 2018 Authlete, Inc. 1
Agenda
• Read Only と Read and Write の判定方法
• リクエストオブジェクトのパラメーターチェック
• Authlete 2.0
© 2018 Authlete, Inc. 2
Agenda
• Read Only と Read and Write の判定方法
• リクエストオブジェクトのパラメーターチェック
• Authlete 2.0
© 2018 Authlete, Inc. 3
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
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
リクエスト
認可サーバー
(FAPI 対応済)
このリクエストは Read Only
の仕様に従って処理?
それとも Read and Write の仕
様に従って処理?
クライアントアプリ
© 2018 Authlete, Inc. 6
Q: 認可サーバーは Read Only なのか
Read and Write なのかをどう判定するの
か?
仕様書には特に明記されていない
スコープを利用して判定する!
© 2018 Authlete, Inc. 7
スコープに属性 (key-value) を紐づけておく
read_account
key value
fapi r
…
口座情報を読み取るためのスコープ
スコープの属性群
© 2018 Authlete, Inc. 8
FAPI Read Only に
対応するものとする
認可サーバー
(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
Authlete でのスコープの属性定義
属性のキー 属性の値 対応するケース
fapi r FAPI Read Only
fapi rw FAPI Read and Write
上記以外の場合
OpenID Connect の
authentication リクエスト
© 2018 Authlete, Inc. 10
Agenda
• Read Only と Read and Write の判定方法
• リクエストオブジェクトのパラメーターチェック
• Authlete 2.0
© 2018 Authlete, Inc. 11
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
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
本当にそれでいいの?
© 2018 Authlete, Inc. 14
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
Bad case1: スペースが入ってたら
{"key1":"value1","key2":"value2"} {"key1":"value1”, "key2":"value2”}
等しい JSON と判定すべきだが
文字列比較では異なる値としてみなされてしまう
© 2018 Authlete, Inc. 16
Bad case2: 列挙順序が異なっていたら
{"key1":"value1","key2":"value2"} {"key2":"value2”,"key1":"value1”}
等しい JSON と判定すべきだが
文字列比較では異なる値としてみなされてしまう
© 2018 Authlete, Inc. 17
じゃあどうやるの?
© 2018 Authlete, Inc. 18
{"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
FAPI に関する実装を振り返って
• 悩むのが多かったのは仕様書に書かれていない部分
• 今回提示した方法が唯一の正解というわけではないの
で参考程度に
© 2018 Authlete, Inc. 20
Agenda
• Read Only と Read and Write の判定方法
• リクエストオブジェクトのパラメーターチェック
• Authlete 2.0
© 2018 Authlete, Inc. 21
✓BaaS (Backend as a Service)として利用可能であり
導入・運用が容易
✓OAuth 2.0 / OIDC関連仕様を網羅した実装
✓ユーザーからのフィードバックに基づいて
仕様の先を行く機能群を実装
✓関連仕様の専門家集団が設計・運用
© 2018 Authlete, Inc.
OAuth/OIDC実装者の課題洞察から誕生した
「認可サーバ構築用APIサービス」
22
© 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
Authlete 2.0 新機能
New! FAPI モード
© 2018 Authlete, Inc. 24
Authlete 2.0 新機能
New! スコープ属性管理機能
© 2018 Authlete, Inc. 25
Authlete 2.0 新機能
New! 新規クライアント認証方式の追加
© 2018 Authlete, Inc. 26
Authlete 2.0 新機能
New! PKI 証明書チェーン検証機能
© 2018 Authlete, Inc. 27
Authlete 2.0 新機能
• その他便利な API の新規追加, etc…
© 2018 Authlete, Inc. 28
Thank you.
© 2018 Authlete, Inc. 29

Contenu connexe

Plus de FinTechLabs.io

Plus de FinTechLabs.io (6)

Authlete FAPI Implementation Part 1 #fapisum - Japan/UK Open Banking and APIs...
Authlete FAPI Implementation Part 1 #fapisum - Japan/UK Open Banking and APIs...Authlete FAPI Implementation Part 1 #fapisum - Japan/UK Open Banking and APIs...
Authlete FAPI Implementation Part 1 #fapisum - Japan/UK Open Banking and APIs...
 
Open Banking UK “Identity Product” Internals #fapisum - Japan/UK Open Banking...
Open Banking UK “Identity Product” Internals #fapisum - Japan/UK Open Banking...Open Banking UK “Identity Product” Internals #fapisum - Japan/UK Open Banking...
Open Banking UK “Identity Product” Internals #fapisum - Japan/UK Open Banking...
 
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
 
Basics: OAuth and OpenID Connect #fapisum - Japan/UK Open Banking and APIs Su...
Basics: OAuth and OpenID Connect #fapisum - Japan/UK Open Banking and APIs Su...Basics: OAuth and OpenID Connect #fapisum - Japan/UK Open Banking and APIs Su...
Basics: OAuth and OpenID Connect #fapisum - Japan/UK Open Banking and APIs Su...
 
Trends in Banking APIs #fapisum - Japan/UK Open Banking and APIs Summit 2018 ...
Trends in Banking APIs #fapisum - Japan/UK Open Banking and APIs Summit 2018 ...Trends in Banking APIs #fapisum - Japan/UK Open Banking and APIs Summit 2018 ...
Trends in Banking APIs #fapisum - Japan/UK Open Banking and APIs Summit 2018 ...
 
Open Banking for Developers #fapisum - Japan/UK Open Banking and APIs Summit ...
Open Banking for Developers #fapisum - Japan/UK Open Banking and APIs Summit ...Open Banking for Developers #fapisum - Japan/UK Open Banking and APIs Summit ...
Open Banking for Developers #fapisum - Japan/UK Open Banking and APIs Summit ...
 

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