> ## Documentation Index
> Fetch the complete documentation index at: https://developers.authlete.com/llms.txt
> Use this file to discover all available pages before exploring further.

# FAPI

> FAPI の概要と、Authlete の実装に関する情報です。

<Note>
  このページは **Authlete 2.x** 用です。3.0 のドキュメントは[こちら](/ja/protocols-and-flows/compliance-profiles/financial-grade-api-fapi-overview)をご覧ください。
</Note>

# FAPI とは

[OpenID Foundation](https://openid.net/) 傘下のワーキンググループが策定を進めている [FAPI](https://openid.net/wg/fapi/) は、安全かつ相互運用可能な API 通信を実現するための標準規格です。金融業界に加えて、医療分野や電子政府など、高いセキュリティが要求される分野で重要な役割を果たしています。

FAPI は OAuth 2.0 と OpenID Connect を基礎としています。FAPI 1.0 に始まり、現在は最新版の FAPI 2.0 まで発展しました。FAPI 2.0 では最新のプロトコルを採用することでよりセキュアなデータ保護を可能にする一方、FAPI 1.0 よりもシンプルな実装ができるようになっています。

# FAPI セキュリティプロファイル

仕様群の中でも [FAPI セキュリティプロファイル](https://openid.net/wg/fapi/specifications/)は、金融サービスに限らず、標準的な OAuth もしくは OpenID Connect を超える高度なセキュリティが求められる分野のオンラインサービスに対して適用可能です。FAPI セキュリティプロファイルには FAPI 1.0 と FAPI 2.0 があり、Authlete はいずれもサポートしています。

## FAPI 1.0

FAPI 1.0 は 2 つのパートに分かれています。

* [Financial-grade API Security Profile (FAPI) 1.0 – Part 1: Baseline](https://openid.net/specs/openid-financial-api-part-1-1_0.html)

  OAuth の基本的なセキュリティプロファイル。中等度の固有リスク (moderate inherent risk) がある API の保護に適している

* [Financial-grade API Security Profile (FAPI) 1.0 – Part 2: Advanced](https://openid.net/specs/openid-financial-api-part-2-1_0.html)

  OAuth の高度なセキュリティプロファイル。非常に機微なデータへのアクセスや、金融取引（例: 決済指図）など、高レベルの固有リスク (high inherent risk) がある API の保護に適している

このうち後者の "FAPI Part 2" では、OAuth 2.0 だけではなく OpenID Connect 仕様に定義されている高度な機能を積極的に活用しています。主な機能強化点は以下の通りです。

* 認可リクエスト / レスポンスの送信者詐称・改ざん防止
  * [リクエストオブジェクト](https://openid.net/specs/openid-connect-core-1_0.html#JWTRequests)の利用
  * [ハイブリッドフロー](https://openid.net/specs/openid-connect-core-1_0.html#HybridFlowAuth)もしくは [JARM](https://bitbucket.org/openid/fapi/src/master/Financial_API_JWT_Secured_Authorization_Response_Mode.md) の利用
* 認可コードの漏洩・盗用防止
  * リダイレクト URI (`redirect_uri`) の厳密な管理
* クライアントのなりすまし防止
  * [双方向 TLS クライアント認証](https://www.rfc-editor.org/rfc/rfc8705.html#name-mutual-tls-for-oauth-client) もしくは [JWT](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication) によるクライアント認証
* トークンの漏洩・盗用防止
  * [クライアント証明書へのバインド](https://www.rfc-editor.org/rfc/rfc8705.html#name-mutual-tls-client-certifica)の利用

<img src="https://mintcdn.com/authlete/U3Bh_8MiEfaiZcTc/img/developers/fapi/fapi_01_ja.png?fit=max&auto=format&n=U3Bh_8MiEfaiZcTc&q=85&s=4735ce212533ec443caf0006f8c39789" alt="" width="3116" height="1750" data-path="img/developers/fapi/fapi_01_ja.png" />

## FAPI 2.0

FAPI 2.0 は、API セキュリティの向上を目的とした包括的なフレームワークです。大きく以下の 4 つの要素に分類されます。

* [FAPI 2.0 Security Profile](https://openid.net/specs/fapi-security-profile-2_0-final.html)

  FAPI 2.0 の中核を成すプロファイル。PAR や DPoP といった最新のセキュリティ仕様群を活用する

* [FAPI 2.0 Message Signing Profile](https://openid.net/specs/fapi-message-signing-2_0-final.html)

  OAuth 2.0 をベースとしたリクエスト・レスポンスに対して、否認防止 (non-repudiation) のメカニズムをサポートするためのプロファイル

* [FAPI 2.0 Attacker Model](https://openid.net/specs/fapi-attacker-model-2_0-final.html)

  API セキュリティを実現する上での潜在的リスクと、その防止策を規定する

* [Grant Management for OAuth 2.0](https://openid.net/specs/fapi-grant-management.html)

  OAuth 2.0 を拡張し、クライアントアプリケーションに付与された権限を管理するための仕組みを定義する

<Note>
  FAPI 2.0 のプロファイル名は策定の過程で変更されています。「Baseline Profile」は「Security Profile」に、「Advanced Profile」は「Message Signing Profile」に改名されました。古い名称を用いた資料や設定値を参照する際はご注意ください。
</Note>

概要は以下をご参照ください。

1. [世界最先端の API セキュリティー技術、実装者による『FAPI（Financial-grade API）』解説](https://qiita.com/TakahikoKawasaki/items/83c47c9830097dba2744)

   Financial-grade API（通称 FAPI; ファピ）は、OpenID Foundation の Financial-grade API ワーキンググループが策定した技術仕様です。OAuth 2.0 と OpenID Connect（以降 OIDC）を基盤とし、より高い API セキュリティーを必要とする金融業界および他の様々な業界のため、追加の技術要求事項を定めています。

2. [Financial-grade API (FAPI) 勉強会](https://www.authlete.com/ja/resources/videos/20220112/)

   2022 年 1 月 12 日に開催した弊社勉強会のプレゼンテーション録画です。FAPI の概要、および 2021 年 3 月に公開された FAPI 1.0 を解説します。また、FAPI 2.0 の最新動向もご紹介します。

3. [FAPI 2.0 の概要](https://qiita.com/hidebike712/items/020a4cc2a95f4ab47965)

   FAPI 2.0 の構成要素と、FAPI 1.0 から FAPI 2.0 に至る仕様策定の経緯を解説した記事です。FAPI 2.0 を理解する上で前提となる仕様群も紹介しています。

# Authlete と FAPI

Authlete では、2018 年 7 月以降、FAPI をサポートし、2019 年 4 月以降 [Financial-grade API Certification](https://openid.net/certification/#FAPI_OPs) を取得しています。

詳細は、以下のドキュメントをご参照ください。

* [FAPI の機能を利用する](/ja/v2/protocols-and-flows/compliance-profiles/how-to-use-fapi)

  Authlete がどのプロファイルを適用するかを決める方法を、FAPI 1.0 と FAPI 2.0 の両方について説明します。各プロファイルの詳細ページへの入口でもあります。

* [Financial-grade API (FAPI) Basics](/ja/v2/protocols-and-flows/compliance-profiles/fapi)

  Authlete を利用した Financial-grade API - Part 2: Read and Write API Security Profile （以下 FAPI）対応のアイデンティティ・プロバイダーを構築する手順を通じて、同仕様が規定するセキュリティ条項の概要と Authlete の設定方法を紹介します。

<img src="https://mintcdn.com/authlete/U3Bh_8MiEfaiZcTc/img/developers/fapi/fapi_02_ja.png?fit=max&auto=format&n=U3Bh_8MiEfaiZcTc&q=85&s=6862c4ae145680be8e3ac5ed1e871446" alt="" width="2699" height="1517" data-path="img/developers/fapi/fapi_02_ja.png" />
