APIキーによる認証
このドキュメントでは、 APIキーとはなにか、それを使用した認証について説明します。
APIキーとは
APIキーは、プログラムによるマネーフォワード クラウドのAPIへのアクセスをするための認証方式です。サーバー間通信、自動化スクリプト、AI Agentなど、ユーザーの操作を必要とせずにAPIを呼び出すことができます。
APIキーは、アプリポータルで発行され、一度だけ表示されます。発行されたAPIキーは安全に保管し、コード内に直接記述せず、環境変数やシークレット管理サービスを使用して管理してください。APIキーはパスワードと同じく、誰にも共有してはいけません。
APIキーとトークンの違い: APIキーは、パスワードのような長期的な認証情報(クレデンシャル)です。APIキー自体をAPIリクエストに直接使用するのではなく、まずAPIキーを使用してJWTに交換します。このトークンは1時間有効で、実際のAPI呼び出しに使用します。この2段階のアプローチにより、セキュリティが向上し、APIキーの露出を最小限に抑えることができます。
各APIエンドポイントがサポートする認証方式(APIキー、OAuth、または両方)は異なります。使用予定のAPIエンドポイントがどの認証方式をサポートしているか、APIリファレンスで確認してください。
OAuth 2.0認可フローとの違い
マネーフォワード クラウドのAPIへのアクセスには、APIキーとOAuth 2.0認可フローの2つの認証方式があります。どちらの方式を使用するかは、アプリケーションの種類や利用シーンによって異なります。
| 項目 | APIキー | OAuth 2.0認可フロー |
|---|---|---|
| 認証の対象 | ユーザーの権限で実行 | 事業者全体のデータにアクセス |
| トークンの有効期限 | APIキー自体に期限なし(JWTは1時間) | アクセストークンは1時間、リフレッシュトークンで更新可能 |
| 権限の範囲 | APIキー発行時にサービス単位で設定 | ユーザーの同意に基づいてスコープを指定 |
どちらの認証方式を選ぶべきか
APIキーはユーザーの権限でAPIを実行する必要がある場合に使用します。
OAuth 2.0認可フローは事業者全体のデータにアクセスする必要がある場合に使用します。
OAuth 2.0認可フローの詳細は、OAuth 2.0認可フローのドキュメントを参照してください。
APIキーの仕組み
APIキーを使用してマネーフォワード クラウドのAPIにアクセスする流れは、以下の4つのステップで構成されます:
STEP 1: APIキーの発行
アプリポータルでAPIキーを発行します。APIキーは、アクセス対象となるサービスを指定して発行します。APIキーは一度だけ表示されるため、安全な場所に保管してください。
STEP 2: JWTの取得
発行されたAPIキーを使用して、/auth/exchangeエンドポイントにリクエストを送信し、短期間有効なJWTを取得します。このトークンは1時間有効です。
POST https://api.biz.moneyforward.com/auth/exchange
Authorization: Bearer mf_api_prd_xxxxxxxxxxxxxxxx
レスポンス:
{
"access_token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600
}
STEP 3: APIの呼び出し
取得したJWTを使用して、マネーフォワード クラウドのAPIを呼び出します。トークンはAuthorizationヘッダーにBearerスキームで指定します。
GET https://api.biz.moneyforward.com/{service}/api/v1/...
Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...
STEP 4: トークンの更新
JWTは1時間で有効期限が切れます。トークンが期限切れになった場合は、再度/auth/exchangeエンドポイントを呼び出して新しいトークンを取得してください。
APIキーの形式
APIキーは以下の形式で発行されます:
mf_api_prd_{ランダム文字列}
- プレフィックス:
mf_api_prd_- Money ForwardのAPIキーであることを示します - ランダム文字列: セキュアなランダム文字列
実際の例:
mf_api_prd_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
レート制限
APIキーには以下のレート制限が適用されます:
/auth/exchangeエンドポイント
/auth/exchangeエンドポイントには、APIキーごとに1分あたり100リクエストの制限があります。この制限を超えると、429 Too Many Requestsエラーが返されます。
通常の運用では、取得したJWTを1時間キャッシュして使用するため、この制限に達することはほとんどありません。
JWTを使用したAPI呼び出し
JWTを使用した各APIエンドポイントへの呼び出しには、それぞれ独自のレート制限があります。詳細は各APIサービスのドキュメントを参照してください。
/auth/exchangeのレート制限とJWTを使用したAPI呼び出しのレート制限は別々にカウントされます。
セキュリティ上の注意事項
APIキーを安全に管理するため、以下の点に注意してください:
1. APIキーを安全に保管する
- コードに直接記述しない: ソースコードにAPIキーをハードコードしないでください
- バージョン管理システムにコミットしない:
.envファイルや設定ファイルは.gitignoreに追加してください - 環境変数を使用する: 環境変数やシークレット管理サービス(AWS Secrets Manager、HashiCorp Vaultなど)を使用してください
2. 最小権限の原則に従う
APIキーを発行する際は、必要最小限のサービスのみを選択してください。不要なサービスへのアクセス権限は付与しないでください。
3. 定期的なローテーション
セキュリティを強化するため、APIキーは定期的に新しいものに更新(ローテーション)することを推奨します。古いAPIキーは無効化してください。
4. APIキーの漏洩時の対応
APIキーが漏洩した可能性がある場合は、直ちにアプリポータルで該当のAPIキーを無効化し、新しいAPIキーを発行してください。
APIキーが漏洩した場合、弊社は一切の保証を提供できません。APIキーは厳重に管理し、漏洩を防ぐようお願いいたします。
漏洩に関するご相談やサポートが必要な場合は、アプリポータルサポートまでお問い合わせください。
5. 通信の暗号化
APIキーやJWTを送信する際は、必ずHTTPS通信を使用してください。HTTPSを使用することで、通信内容が暗号化され、中間者攻撃を防ぐことができます。
6. JWTの安全な管理
取得したJWTもAPIキーと同ように機密情報です。メモリ内で管理し、ログに出力したり、クライアントに送信したりしないでください。
次のステップ
APIキーの概念を理解したら、実際に使用してみましょう:
- チュートリアル: APIキーによる認証 - APIキーの発行からJWTの取得、実装までを段階的に学習します
- APIリファレンス: /auth/exchange -
/auth/exchangeエンドポイントの技術仕様を確認します - OAuth 2.0認可フロー - ユーザー向けアプリケーションでの認証方式を学習します