Help us understand the problem. What is going on with this article?

FAPI (Financial-grade API) って何?

More than 1 year has passed since last update.

はじめに

この記事は、FAPIについて正しくまとめようとした記事ではなく(それが必要な方はこちらを参照ください)、認証・認可の初心者がどのようにFAPIを捉えるか、という目線で書かれています。
ご指摘など大歓迎ですので、ぜひコメントください。

FAPIとは

金融機関サービスのためのAPIの標準だと思っています。
金融機関のサービスを一部利用できるアプリでは、(現在もそうかは知りませんが)銀行のWebサイトを、ユーザーが入力したIDとパスワードでスクレイピングしてAPIエンドポイントのように利用しているケースがありました。
これをOAuthのモデルで解決するのがFAPIであり、OpenID FoundationのWorking Groupで議論が進められています。

金融機関で求められるセキュリティを担保するため、OAuthのモデルに則りつつもより強い勧告をしたり、仕様の追加をしているものと思われます(まだFAPIの仕様を読みきっていない & 基本的なOAuthの仕様と比較していないので推測ですが)

基本的なOAuthだけでは何が問題なのか?

クライアントアプリ ←→ クライアントサーバー ←→ 金融サービス の間で、特に認可グラントのフローにおいてメッセージの送信元・送信先・メッセージ内容が正しいかどうかを確認できないのが問題のようです。
そのほか、クライアントサーバーの内部ではグラントやアクセストークンなどを暗号化しないとか?などの観点もあるようです。

メッセージの送信元

  • 金融サービスがクライアントのブラウザ/アプリからのリクエストをクライアントのサーバー経由で受け取る時、それが本当に認可対象のエンドユーザー由来のリクエストなのか?を確かめたい
  • クライアントのブラウザ/ アプリがサーバー経由で金融サービスのレスポンスを受け取る時、それが銀行になり済ました悪意あるサービスではないかを確かめたい というニーズがあるようです。

メッセージの送信先

  • クライアントのサーバー(例えばお財布アプリのバックエンド)がスマホアプリに対して認可グラントを送るとき、スマホがマルウェアに感染していてURLスキーマが乗っ取られていたら、その認可グラントが悪意あるアプリに取って行かれてしまう、のが問題のようです。

どのように対策するか?

FAPIの仕様では読み取り専用のAPIと読み書き可能なAPIで対策を分けています。
読み取り専用のAPIのためのフローでも基本的なOAuthよりも厳しくなっており、さらに多様な攻撃を想定したセキュリティを仕様に組み込んだのが読み書き可能なAPI、という枠組みで仕様を読み進めるのが良さそうです。

おわりに

ここに書いたことは全てFAPIの資料の解釈です。
もし他にもこんな記事が参考になるよ、とか、こんな勉強会してるよ、などの情報があればぜひコメントください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした