「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>クレームベース認証#z50b400d]] * 目次 [#m9a7ace2] #contents *概要 [#c3d7eaf3] [[OpenID Financial API (FAPI) WG>#f4f721ee]]において、 -PSD2 や Open Banking Standard を考慮し、 -ISO/TC 68(Financial services)への提出も視野に入れながら、 以下のような、金融 API の標準仕様群の策定作業が進められている。 |Part|Title|説明|h |1|[[Read Only API Security Profile>#jcbf3a32]]|参照系 API セキュリティー要件| |2|[[Read & Write API Security Profile>#j5efef5b]]|更新系 API セキュリティー要件| |3|[[Open Data API>#x600e47c]]|公開データ API 仕様| |4|[[Protected Data API and Schema - Read only>#ve2809ce]]|参照系 API 仕様| |5|[[Protected Data API and Schema - Read and Write>#o9625781]]|更新系 API 仕様| **目的 [#bbfcc927] 下記に関する勧告を提供(チェックリスト) -セキュリティ+プライバシー・プロファイル -JSON data schema, REST APIs **機能 [#yaefe264] 以下を可能にする。 -アプリケーションが銀行・証券口座の参照 -アプリケーションが銀行・証券口座の更新 -利用者がセキュリティとプライバシー設定をする 保険およびクレジットカード口座も考慮対象とする。 **背景 [#eda6649b] OAuth2.0はフレームワークなので用途に合わせたセキュリティ・プロファイルが必要。 -基本実装でOK --ソーシャルアプリにおけるデータ共有 --閉回路の産業アプリケーション -金融機関APIのセキュリティ・プロファイル --Read Only API用セキュリティ・プロファイル --Read and Write API用セキュリティ・プロファイル ***考慮事項 [#g964b656] 金融機関API向けのプロファイルは 全てを解決する必要がある。 +1クライアントは1つの認可サーバとのみ関係を持つ。~ (リダイレクト・エンドポイントを分け、クライアントの論理分割) +メッセージ --認証 ---リクエスト ---レスポンス --秘匿性 +認証 --送信者(Client、Server) --受信者(Client、Server) --利用者(Resource Owner) +トークン --フィッシング攻撃 --リプレイ攻撃 ***基準 [#o2f057e2] +Unique Source Identifier~ ユニークなソース識別子 +Protocol + version identifier~ プロトコル + バージョン + msg識別子 +Full list of actor/roles~ actor/rolesの完全なリスト +Message Authentication~ 改ざんされていないメッセージ ***AS-IS [#n6c15b3c] -RFC6749の認証への対応状況 |#|メッセージ|送信者認証|受信者認証|メッセージ認証|h |1|認可リクエスト|Indirect|None|None| |2|認可レスポンス|None|None|None| |3|アクセストークン・リクエスト|Weak|Good|Good| |4|アクセストークン・レスポンス|Good|Good|Good| -RFC6749の基準への対応状況 |#|Message|Parameters|(a) Unique Source Identifier|(b) Protocol + version identifier |(c) Full list of actor/roles|(d) Message Authentication|h |1|Authorization Request|response_type&br;client_id&br;redirect_uri&br;scope&br;state|Client ID is not globally unique.&br;Tampering possible.|OK,&br;but it is not integrity protected.|No.|No.| |2|Authorization Response|code&br;state&br;other extension parameters|No source identifier|~|~|~| |3|Token Request|grant type&br;code&br;redirect uri&br;client_id/client_secret|Client ID is not globally unique.&br;Tampering possible.|OK (as long as there is no OAuth 3.0)|No.|OK.| |4|Token Response|access_token&br;token_type&br;expires_in&br;refresh_token others|No source identifier|~|~|~| *仕様 [#g2ce933d] **Part 1: Read Only API Security Profile [#jcbf3a32] -Draft-04: Financial Services – Financial API - Part 1: Read-Only API Security Profile~ http://openid.net/specs/openid-financial-api-part-1.html >FAPI Read Onlyセキュリティ・プロファイル ***要約 [#l78424d4] 安全なフローを使用する。 -フロー --[[Authorization Code>OAuth#yfeb403d]] --[[OAuth PKCE]] --[[OAuth 2.0 Token Revocation]] -通信 --SSL/TLS --client_id + redirect_uri(完全一致) -認証 --ユーザ:[[LoA 2>#h48691d5]] --クライアント:~ 追加のクライアント認証の実装が必要。 ---[[JWT Client Assertion>JWT bearer token authorizationグラント種別]] ---[[Mutual TLS>#l97e2e37]] -トークン種類:Bearer Token ***詳細 [#j3c7bc32] -[[IDトークン>#ofb73c59]]署名の鍵のエントロピーがアルゴリズム毎に規定されている。 -access_token発行 --エントロピーは 128 ビット以上 --ともに、付与されたscopeの情報を返す。 ***原文読んで書く [#s883683a] **Part 2: Read and Write API Security Profile [#j5efef5b] -Draft-04: Financial Services – Financial API - Part 2: Read and Write API Security Profile~ http://openid.net/specs/openid-financial-api-part-2.html >FAPI Read and Writeセキュリティ・プロファイル ***要約 [#sab53ee8] 送信者・受信者・メッセージ認証を強化 -フロー~ [[OpenID Connect]]の[[Hybrid Flow>OpenID Connect#l565139a]] --response_type ---code id_token ---code id_token token --[[IDトークン>#ofb73c59]] ---クレーム追加(at_hash、c_hash) ---JWS署名(PS256, ES256) + 暗号化 -通信 --SSL/TLS --client_id + redirect_uri(完全一致) -認証:[[LoA 3>#h48691d5]] -トークン種類:記名式トークン ***詳細 [#c9b59544] -[[JWT Secured Authorization Request (JAR)>#ncf13807]]のサポート(必須ではない) -トークン所有者とトークンの紐付け --confidential クライアント ---[[Mutual TLS>#l97e2e37]] ---[[トークン・バインディング>#h9e26456]] --public クライアント ---[[トークン・バインディング>#h9e26456]]必須 -対応 --認証 |#|メッセージ|送信者認証|受信者認証|メッセージ認証|h |1|認可リクエスト|Request Object|Request Object|Request object| |2|認可レスポンス|Hybrid Flow|Hybrid Flow|Hybrid Flow| |3|アクセストークン・リクエスト|Good|Good|Good| |4|アクセストークン・レスポンス|Good|Good|Good| --基準 |#|Message|Parameters|(a) Unique Source Identifier|(b) Protocol + version identifier|(c) Full list of actor/roles|(d) Message Authentication|h |1|Authorization Request|response_type&br;client_id&br;redirect_uri&br;scope&br;state|Unique redirect_uri + client_id|OK (Unique Parameter List)|(a) + state as the UA identifier / TBID as UA identifier|Signing by JWT Secured Authorization Request (JAR)| |2|Response code|state&br;other extension parameters|Unique redirect_uri|~|(a) + client_id + state as the UA identifier / TBID as UA identifier |Signing by ID Token + s_hash| |3|Token Request|grant_type&br;code&br;redirect_uri&br;client_id/client_secret|Unique redirect_uri + client_id|OK (Unique Parameter List)|(a) + state as the UA identifier / TBID as UA identifier|TLS Protected| |4|Token Response|access_token&br;token_type&br;expires_in&br;refresh_token&br;others|redirect_uri|~|(a) + client_id + state as the UA identifier / TBID as UA identifier|~| ***原文読んで書く [#oe16b4dd] **Part X: Client Initiated Backchannel Authentication Profile [#xdbf7e2a] ***要約 [#beca2e75] UK OBIE(Open Banking Implementation Entity)からの寄付待ち。 ***詳細 [#f5db4a5d] ***原文読んで書く [#ie73e565] **Part 3: Open Data API [#x600e47c] ***要約 [#c69533aa] ***詳細 [#i755f34d] ***原文読んで書く [#vb084c7e] **Part 4: Protected Data API and Schema - Read only [#ve2809ce] ***要約 [#qb4c7fe9] -銀行口座~ US FS-ISAC DDA / OpenBank Project / Figo~ などを参考に作成 UK OBIEからの寄付待ち。 -証券口座~ 現在NRIで試案作成中 ***詳細 [#w547b2fa] ***原文読んで書く [#je445c7d] **Part 5: Protected Data API and Schema - Read and Write [#o9625781] ***要約 [#s063c7fc] -同上 -Scopeではなく、Claims Requestを使うことで、より詳細・柔軟な認可を取得。 ***詳細 [#n28beb52] ***原文読んで書く [#s6e83d89] *技術 [#l4147461] **クライアント認証 [#v874c853] ***Mutual TLS [#l97e2e37] https://tools.ietf.org/html/draft-ietf-oauth-mtls-05 相互TLS証明書に基づく認証を利用するクライアント認証の追加メカニズム ***トークン・バインディング [#h9e26456] https://tools.ietf.org/html/draft-ietf-oauth-token-binding-05 **メッセージ認証 [#m6997b05] ***JWT Secured Authorization Request (JAR) [#ncf13807] -処理 --認可リクエストにrequest_uriを含める。 --request_uriからリクエスト・オブジェクトを取得する。 --リクエスト・オブジェクトの署名検証用の鍵を取得。 ---クライアント・メタデータが登録されている場合、~ JWK Setをjwks クライアントメタデータ値から取得。 ---クライアント・メタデータが登録されていない場合、~ jwks_uriからクライアント・メタデータ(JWK Set)を取得。 -参考 --The OAuth 2.0 Authorization Framework: JWT Secured Authorization Request (JAR)~ https://tools.ietf.org/html/draft-ietf-oauth-jwsreq-08 --OpenID Connect Core 1.0 incorporating errata set 1~ 6. Passing Request Parameters as JWTs~ http://openid.net/specs/openid-connect-core-1_0.html#JWTRequests **ユーザ認証 [#tc229f3f] ***LoA 認定プログラム [#h48691d5] -学認 LoA 1認定プログラム - 国立情報学研究所~ http://www.nii.ac.jp/userimg/6_gakunin_loa1_2013-11_v2.pdf *参考 [#rb6016fa] **OpenID [#n6f0aba7] -OpenID Foundation website~ http://openid.net ***OpenID Financial API (FAPI) WG [#f4f721ee] NRI、Microsoft、Intuitが中心となり組織されたWG。 -Financial API (FAPI) WG | OpenID~ http://openid.net/wg/fapi/ --Financial API | OpenID~ http://openid.net/tag/financial-api/ --openid / fapi — Bitbucket~ https://bitbucket.org/openid/fapi/ **nat [#a2685f07] https://www.slideshare.net/nat_sakimura/presentations -OpenID Foundation Foundation Financial API (FAPI) WG~ https://www.slideshare.net/nat_sakimura/openid-foundation-foundation-financial-api-fapi-wg-63097855 -Financial Grade OAuth & OpenID Connect~ https://www.slideshare.net/nat_sakimura/financial-grade-oauth-openid-connect -API Days 2016 Day 1: OpenID Financial API WG~ https://www.slideshare.net/nat_sakimura/api-days-2016-day-1-openid-financial-api-wg -OpenID Foundation FAPI WG: June 2017 Update~ https://www.slideshare.net/nat_sakimura/openid-foundation-fapi-wg-june-2017-update -金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG~ https://www.slideshare.net/nat_sakimura/api-openid-financial-api-fapi-wg -Introduction to the FAPI Read & Write OAuth Profile~ https://www.slideshare.net/nat_sakimura/introduction-to-the-fapi-read-write-oauth-profile -金融APIに求められるセキュリティ~APIDays Paris講演より~ 2017年2月号|金融ITフォーカス|刊行物|NRI Financial Solutions~ http://fis.nri.co.jp/ja-JP/publication/kinyu_itf/backnumber/2017/02/201702_8.html **その他 [#q9bd8664] -Financial API 実装の技術課題 - Qiita~ https://qiita.com/TakahikoKawasaki/items/48a9d22205f77db59726 -OpenID BizDay で金融 API の動向について聞いてきた - TMD45'β'LOG!!!~ http://blog.tmd45.jp/entry/2017/08/02/011504 ---- Tags: [[:認証基盤]], [[:クレームベース認証]]