Apple App StoreやGoogle Playの要件を満たすには、アプリのAPIを保護することが極めて重要です。本ガイドでは、 5つの主要なAPIセキュリティ標準 プラットフォームのルールへの準拠、ユーザーデータの保護、そしてアプリのパフォーマンス向上に役立つ方法を解説します。
要点:
- OAuth 2.0: トークンベースのアクセスによる安全なユーザー認証。
- OpenID Connect: ユーザー検証を強化するIDレイヤーを追加します。
- TLS/SSL: 通信中のデータを暗号化し、 改ざんを防止します。
- JWTセキュリティ: 適切な署名と保存方法でトークンを保護します。
- API レート制限: リクエスト制限でAPIの悪用を防ぎます。
これらの標準を実装することで、 Capacitor アプリが ユーザーデータを安全に保ちながら、審査基準を満たせます。さらに詳しく知りたいですか?ステップごとに見ていきましょう。
プロキシサーバーとユーザー認証を用いたフロントエンドアプリでの API キーの保護方法
1. OAuth 2.0 実装方法

OAuth 2.0は、モバイルアプリの安全な認可に広く利用されているプロトコルです。機密性の高い認証情報を公開することなく、サードパーティ製アプリがユーザーのリソースにアクセスすることを可能にします。AppleやGoogleなどのプラットフォームは、標準に準拠した安全な認証を求めており、OAuth 2.0はトークンベースのセキュリティと制御された API アクセスを通じて、これらの要件を満たします。
Capacitor アプリで OAuth 2.0 をセットアップする方法は以下の通りです:
主要な認可フロー
- PKCE(Proof Key for Code Exchange)を用いた認可 Code : 最も安全なフローで、モバイルアプリに最適です。
- インプリシットフロー (Implicit Flow): レガシーシステムで必要な場合にのみ使用してください。
- クライアント資格情報: サービス間通信用。
統合の手順
-
トークン管理
- トークンを安全に取得する。
- トークンの保存先: 暗号化ストレージ 不正アクセスを防止するため。
- トークンのリフレッシュを自動化し、アクセスを継続させる。
- トークンの署名を検証し、正当性を確認する。
-
セキュリティ対策
- スコープを設定してアクセスを制限する。
- トークンの有効期限を設定してリスクを軽減しましょう。
- レート制限を適用して不正利用を防止しましょう。
- 不審なアクティビティがないか、認証の試行を監視しましょう。
-
App Store コンプライアンス
- Apple が承認している OAuth プロバイダーを使用しましょう。
- Google Play のセキュリティガイドラインを遵守しましょう。
- アプリの認証ワークフローを明確にドキュメント化しましょう。
- レビューやトラブルシューティングのために監査ログを保持しましょう。
保護を強化するために、OAuth 2.0 と他の認証方法を組み合わせることを検討してください。このアプローチは、機密性の高いユーザーデータを守るだけでなく、API エンドポイントのセキュリティも確保し、プラットフォーム要件への準拠にもつながります。 [1][2].
2. OpenID Connect セットアップ
OpenID Connect は、OAuth 2.0 に ID レイヤーを追加することで、安全なユーザー認証を実現します。
実装の主要ステップ
-
Identity Tokenの設定
- 以下のようなスコープを定義:
openid,profileやemail. - アクセストークンの有効期限を15〜30分に設定します。
- セキュリティ向上のため、refresh token rotationを有効にします。
- 以下のようなスコープを定義:
-
ユーザー認証プロセス
- システムブラウザやデバイスの生体認証によるネイティブ認証を使用します。
- トークンは暗号化されたストレージに安全に保存してください。
- トークンの検証は必ずサーバーサイドで行ってください。
-
Claimsの管理
- 実際に必要なユーザー情報のみをリクエストしてください。
- セキュリティを維持するため、適切なセッション管理を実装してください。
プラットフォーム別のガイドライン
iOSの場合:
- 使用する ASWebAuthenticationSession 安全な認証のために使用します。
- サポート Appleでサインイン 必要に応じて実装してください。
- Keychainを使用してトークンを安全に保存します。
- 保護を強化するために証明書のピン留めを有効にします。
Androidの場合:
- 使用する Chrome Custom Tabs による認証フロー。
- Android keystoreで認証情報を保護します。
- 統合する Google Sign-In を、必要に応じて導入してください。
- 有効化する SafetyNet による アテステーションでセキュリティを強化します。
セキュリティのベストプラクティス
- セッションを確実にクリアするため、ログアウト処理を実装してください。
- CSRF攻撃を防ぐために、stateパラメータを使用してください。
- 有効化 HTTP Strict Transport Security (HSTS) セキュアな接続のために。
- 不審な挙動を検知するため、認証試行を監視してください。
最後に、TLS/SSLを強制することで、すべての認証通信が転送中に保護されるようにしてください。
3. TLS/SSL セキュリティ
TLS/SSLは、データ転送中の暗号化を保証します。TLS (Transport Layer Security) は API のトラフィックを保護し、盗聴や改ざんから守ります。
主要なセキュリティプラクティス
- 使用する TLS v1.2 以上 すべての API 通信に適用します。これにより、クライアントとサーバー間での OAuth トークンや OpenID ID アサーションのプライバシーが保たれます。
- 適用する 証明書のピン留め(Certificate Pinning) iOS と Android 両方のアプリケーションに対応しています。
- 有効化する HTTP Strict Transport Security (HSTS) サーバー上で設定し、安全な接続を強制します。
Capacitor のセットアップ
Capacitor の HTTP プラグインや WKWebView/NSSecureTransport を設定して、無効な証明書をブロックします。Live Update の場合は、Capgo のようなツールが Apple と Google 両方のガイドラインを満たすエンドツーエンドの暗号化を提供します。 [1].
4. JWT セキュリティ対策
JSON Web Token (JWT) は、API の通信を保護し、特に App Store の要件への準拠を確実にするために不可欠です。トークン自体のセキュリティに焦点を当てることで、OAuth 2.0 や OpenID Connect の構成を強化します。
トークン署名のガイドライン
- 使用する 非対称のRS256 (RSA-SHA256) でトークンに署名し、90日ごとに秘密鍵をローテーションします。
- JWTの保存先は、 暗号化されたセキュアストレージに設定し、 不正アクセスを防止してください。
- 以下の主要な要素を検証します: 署名 (signature), 発行者 (iss), 対象者 (aud)や 有効期限 (expiration).
- ペイロードは最小限に抑え、必要なクレームのみを含め、一意の識別子(jti)を追加してください。また、機密データの含入は避けてください。
トークンのライフサイクル管理
- リフレッシュトークンを 有効期限の5分前に 更新することで、アクセスの中断を防ぎます。
- また、 失効リスト (例: Redisなど)を運用し、漏洩したトークンを即座に無効化できるようにします。
エラーハンドリング
エラー発生時は、以下のような 汎用的なエラーメッセージを 返却するようにし、 invalid_token バリデーションの詳細が露出しないようにします。
App Store コンプライアンス
App Storeの要件を満たすため、JWTの実装において以下を確認してください:
- プラットフォームの Keychainストレージのガイドラインに準拠していること.
- 適切な 監査ログ(audit logging) を、すべてのトークン関連操作に対して含めること。
5. API のレート制限
API のセキュリティ確保と同様に、ユーザーのアクセス頻度を管理することも重要です。レート制限を設けることで、悪用を防ぎ、DDoS攻撃から保護し、ユーザー間でリソースを公平に共有できます。
レート制限の戦略
トークンの安全性が確保できたら、次は各クライアントが実行できるリクエスト数を決定します。
リクエスト制限
- IPアドレスに基づいたリクエスト制限
- API キーに紐づくユーザーごとのクォータ設定
- トラフィック急増に対応するためのバースト許可
時間ベースの制限
- 固定ウィンドウ方式: 一定の間隔(例:1分ごと、1時間ごと)で制限をリセットする
- スライディングウィンドウ方式: 移動期間における使用量を追跡します
- トークンバケット: リクエストごとにトークンを発行し、時間の経過とともに補充します
実装ガイドライン
ヘッダーとレスポンスコード
制限を適用する際は、レスポンスに以下の役立つヘッダーを含めてください:
- 制限を超えた場合は HTTP 429 (“Too Many Requests”) を使用します
- 以下のようなヘッダーを追加します
X-RateLimit-Limit,X-RateLimit-RemainingやX-RateLimit-Resetユーザーに状況を伝えるために - 以下を含めます
Retry-After再試行可能なタイミングを示すヘッダー
モニタリングとアラート
以下のステップで API の使用状況を監視しましょう:
- API の使用状況をリアルタイムで監視し、パターンを把握する
- 不審なアクティビティを特定してブロックする
- 異常なトラフィックの急増に対してアラートを設定する
- 将来の分析のためにレート制限違反をログに記録する
エラーレスポンスの例
クライアントがレート制限を超えた場合は、明確なJSONメッセージを返します。例:
{
"error": "rate_limit_exceeded",
"message": "Request quota exceeded",
"retry_after": "<seconds until reset>"
}
レート制限のストレージ
レート制限を効率的に適用するには、Redisなどの分散キャッシュ、または Memcachedを使用してください。これらのシステムは、高いパフォーマンスを維持しながら、複数のインスタンスにわたるリクエスト数を追跡するのに役立ちます。
次へ: App Storeのセキュリティルールについて
App Storeのセキュリティルール
AppleとGoogleが規定するネットワークおよびストレージのセキュリティ要件について詳しく見ていきましょう。これらのルールは、単なるOAuthトークンやレート制限にとどまらず、アプリがプラットフォームの標準を満たすことを保証するものです。
iOSの要件
- App Transport Security (ATS) 以下の設定が必須です:
- TLS 1.2以降
- Perfect Forward Secrecy (PFS)
- SHA-256以上の証明書
- Keychainを使用して機密データを保護してください。
- 安全な通信のために証明書ピンニングを設定してください。
- すべてのローカルデータを暗号化してください。
Androidの要件
- 使用する ネットワークセキュリティ設定 対象:
- クリアテキスト通信の制限。
- 証明書ピンニング(Certificate Pinning)ルールの定義。
- 必要に応じてカスタム認証局を指定。
- ファイルの安全な暗号化。
- デバイスの整合性チェックにSafetyNet attestationを設定。
- 安全な鍵管理にAndroid Keystoreを使用。
共通のプラットフォームルール
両プラットフォームに共通する主なセキュリティ要件は以下の通りです:
- すべての接続にHTTPSを使用してください。
- 証明書を適切に検証してください。
- SSL/TLS設定が安全に構成されていることを確認してください。
- ローカルストレージを暗号化して保護してください。
- 詳細な監査ログを保持してください。
- セキュリティ対策のドキュメントを提供してください。
API アクセス制御手法
API エンドポイントの保護は、プラットフォームのトランスポートやトークンの保護だけでは不十分です。API の安全性を確保するには、きめ細かなアクセス制御が不可欠です。
主要なアクセス制御手法
-
API キー検証
有効期限を設定した暗号学的に安全なキーを使用してください。90日ごとのキーローテーションを自動化し、キーごとのレート制限と使用クォータを適用します。監査のためにキーの使用状況は常にログに記録してください。この手法は、サービス間通信におけるOAuth 2.0と併用すると効果的です。 -
OAuthスコープの強制
API の権限に特定のスコープを割り当て、リクエストごとに検証してください。適切な認可がないリクエストは拒否し、App Store の審査に向けてスコープの要件を明確にドキュメント化しましょう。スコープを JWT クレームと組み合わせることで、アクセス制限をさらに強化できます。 -
ロールベースアクセス制御 (RBAC)
正確な権限を持つロールを定義し、認証システムを通じて割り当てます。すべての API 呼び出し時にロールの認可を確認し、ロールの割り当ては暗号化されたストレージに安全に保存してください。 -
トークンのイントロスペクションと失効
リアルタイムでトークンの検証を行い、漏洩したトークンのための集中管理されたブラックリストを維持します。即時の失効を可能にし、不審なトークンアクティビティを検知するためのモニタリングを設定してください。
プラットフォームのコンプライアンス
Apple の App Store や Google Play などのプラットフォームで承認を得るには:
- セキュリティレビュー時に、アクセス制御の手法を明確にドキュメント化してください。
- 不正なリクエストには、適切なエラーレスポンスを返してください。
- 監査目的のために、詳細なアクセスログを保持してください。
- セキュリティインシデントに迅速に対処できるよう、リアルタイムモニタリングを有効にしてください。
これらの対策は Apple や Google のセキュリティガイドラインに準拠しており、API がそれらの基準を満たすことを保証します。
Capacitor のための API セキュリティツール
アクセス制御を設定したら、次は Capacitor のワークフローにこれらの保護機能をシームレスに組み込むツールを導入するステップです。OAuth、TLS、JWT プロトコルをサポートするツールは、スムーズなアップデートを実現しながら Capacitor アプリのセキュリティを確保するために不可欠です。
注目すべき主要なセキュリティ機能
Capacitor に効果的なセキュリティツールには、以下が含まれるべきです:
- エンドツーエンド暗号化 データの保護と即時アップデートの実現
- 分析とエラー追跡 アプリのパフォーマンスと問題の監視
- ロールバック機能 迅速な修正のため
- CI/CD連携 および柔軟なホスティングオプション
- App Storeのコンプライアンスチェック プラットフォームの要件を満たすために
- 段階的なロールアウト機能 制御されたアップデートを実現
- 即時のバージョン切り戻し 重大な問題への迅速な対応
- ターゲットユーザーの制御 パーソナライズされたアップデート
おすすめ: Capgo

Capgo は、AppleとGoogleのガイドラインを遵守しながら、Capacitor アプリの Live Update を管理するための優れたツールです。世界的なアップデート成功率は82%を誇り、API の平均レスポンスタイムは驚異の434 msです。 [1].
パフォーマンス指標
Capgo は、迅速かつ効果的なアップデートを実現します:
- ユーザーの95% が24時間以内にアップデートを受信
- 導入実績: 1,900以上のプロダクションアプリ 世界中で [1]
モニタリングと分析
アプリのパフォーマンスとコンプライアンスを維持するために、以下のメトリクスを追跡しましょう:
- アップデート成功率: 最新バージョンを実行しているユーザーの割合
- API のレスポンスタイム: アップデート配信速度の重要な指標
これらのメトリクスを定期的に確認することは、アプリがアプリストアの要件を満たし、スムーズなユーザー体験を提供するのに役立ちます。
[1] Capgo の使用統計
まとめ
まとめると、5つの主要な基準は次のように整合します: セキュアな認証 (OAuth 2.0 with PKCE, OpenID Connect) 強力な暗号化 (TLS 1.2+ と適切な JWT の使用)、および API のレート制限 これらは、Capacitor アプリで Apple と Google のアプリストア要件を満たすために不可欠です。
維持することに注力しましょう エンドツーエンド暗号化, 継続的なモニタリング, 段階的なロールアウト ベータチャネル経由での配信、および統合 CI/CDパイプライン ロールバックオプションの提供。これらのステップは実社会で成果を上げており、アップデート配信において世界的に82%という驚異的な成功率を達成しています [1].
よくある質問
::: faq
App Storeのセキュリティ基準を満たすために、Capacitor アプリに OAuth 2.0 を実装するにはどうすればよいですか?
実装するには、 OAuth 2.0 を Capacitor アプリに実装し、App Storeのセキュリティ基準への準拠を確実にするには、以下の主要なステップに従う必要があります:
- OAuthプロバイダーの設定: OAuthプロバイダー(Google、Apple、その他のサービスなど)にアプリを登録し、Client IDやClient Secretなどの必要な認証情報を取得します。
- OAuthライブラリの導入: 次のようなライブラリを使用します。
@capacitor-community/oauth2を使用して Capacitor アプリにシームレスに統合します。これにより、認証フローやトークンの管理が容易になります。 - リダイレクトURIの設定: 認証コールバックを安全に処理するために、OAuthプロバイダーの設定でアプリのリダイレクトURIが正しく設定されていることを確認してください。
- トークンの安全な管理: アクセストークンやリフレッシュトークンを保存する際は、エンドツーエンドの暗号化を保証するため、セキュアなストレージ(Capacitor の Secure Storage plugin など)を使用してください。
これらの手順に従うことで、スムーズな認証体験を提供しつつ、アプリのセキュリティ基準を満たすことができます。また、 Capgo を利用することで、AppleやGoogleの要件への準拠を維持しながら、ユーザーにリアルタイムのアップデートを届けるといった、アプリのアップデートプロセスの強化も可能です。 :::
::: FAQ
API を、App Store や Google のセキュリティ基準に準拠させるには、どのような対策が必要ですか?
API を Apple や Google のセキュリティ基準に適合させるには、以下のような堅牢なセキュリティプラクティスの実装に重点を置いてください: エンドツーエンド暗号化安全な認証方法やデータプライバシー対策などです。これらはコンプライアンス要件を満たすために不可欠です。
Capacitor アプリを開発している場合、Capgo のようなツールを使うとコンプライアンス対応が簡素化できます。Capgo を活用すれば、Apple や Android のガイドラインを遵守しながら、App Store の承認を待たずにアップデート、修正、新機能を即座に配信できます。これにより、アプリのセキュリティを維持し、常に最新の状態を簡単に保つことが可能です。 :::
::: FAQ
アプリ内の API セキュリティを監視・管理するための最適なツールや手法は何ですか?
アプリの API セキュリティを効果的に管理するには、リアルタイムアップデート、暗号化、そして開発ワークフローへのシームレスな統合を実現するツールの導入を検討してください。 Capgo は Capacitor アプリ向けの強力なソリューションを提供します。開発者は App Store の承認を待つことなく、アップデート、修正、新機能を即座にプッシュできます。これにより、アプリのコンプライアンスを維持し、常に最新の状態に保つことができます。
Capgo では他にも エンドツーエンド暗号化, CI/CD pipelineとの連携、そして特定のユーザーグループにアップデートを割り当てる機能も備えています。これらの機能はセキュリティを強化するだけでなく、アップデートプロセスを効率化し、AppleやGoogleのApp Storeの要件へのコンプライアンス維持を容易にします。 :::
App StoreコンプライアンスのためのAPIセキュリティ標準:続きはこちら
使用している場合 App Store準拠のための主要なAPIセキュリティ基準 セキュリティとコンプライアンスの計画を立て、以下と連携させましょう: 暗号化 暗号化の実装詳細についてはこちら: コンプライアンス コンプライアンスの実装詳細についてはこちら: Capgo セキュリティスキャナー Capgo セキュリティスキャナーの製品ワークフローについてはこちら: Capgo セキュリティ Capgo Security のプロダクトワークフロー向け、および Capgo トラストセンター Capgo Trust Center のプロダクトワークフロー向け。