生体認証 パスワードの代わりに、指紋や顔、その他の生体情報を使用して、ユーザーが安全にアプリにアクセスできるようにします。開発者が Capacitorこの機能を実装するのは非常に簡単で、iOSとAndroidの両方に対応しています。概要は以下の通りです:
-
なぜ生体認証を使うのか?
- パスワードよりも安全性が高いため。
- ログインが高速化され、UXが向上します。
- 機密データのセキュリティ基準を満たします。
-
サポートされている認証方式:
- 指紋認証: 素早く、一般的です。
- 顔認証: ハンズフリーで利用可能です。
- 虹彩認証: 高セキュリティ用途(対応端末限定)。
- 音声認証: アクセシビリティ重視(サポート限定的)。
-
必要な主要ツール:
- Capacitor 3.0以上。
-
セットアップのポイント:
- AndroidManifestとInfo.plistに権限を追加します。
- 安全な保存にはKeychain (iOS) または Keystore (Android) を使用します。
- 互換性とフォールバックオプションを徹底的にテストしてください。
プラグインのクイック比較
| プラグイン名 | Capacitor バージョン | 機能 | 最適な用途 |
|---|---|---|---|
@aparajita/capacitor-biometric-auth |
Capacitor 8 LTS | ネイティブ生体認証、デバイス認証情報 | Capacitor 8 を使用した新規プロジェクト |
capacitor-native-biometric |
Capacitor 3, 4 | 安全な認証情報の保存、Keychain/Keystore | 認証情報の管理 |
| すべてのバージョン | 生体認証とデバイス認証のサポート | 柔軟な認証オプション |
Capacitor アプリでの生体認証 は、機密データを保護するための安全でユーザーフレンドリーな方法です。この記事では、セットアップ手順、code の実装例、テスト戦略、およびセキュリティ標準について詳しく解説します。
Ionic Biometric (FaceID / FingerPrint) 認証
セットアップ要件
アプリで生体認証を有効にするには、 Capacitor アプリいくつかのツール、依存関係、およびプラットフォーム固有の設定が必要です。以下に、Android と iOS 両方のプラットフォームにおけるステップバイステップのセットアップ要件をまとめました。
必要なツールと依存関係
実装に入る前に、以下のツールと依存関係が準備されていることを確認してください。
| コンポーネント | 最小バージョン | 目的 |
|---|---|---|
| Capacitor | 3.0 以上 | コアフレームワーク |
| Node.js | 最新のLTS | パッケージ管理 |
| Xcode | 最新バージョン | iOS開発 |
| Android Studio | 最新バージョン | Android開発 |
| 実機 | iOS 13+ / Android API 23+ | 生体認証機能のテスト |
以下の 生体認証プラグインを Capacitor のバージョンに合わせて選択してください:
- @aparajita/capacitor-biometric-auth Capacitor 8 用
- capacitor-native-biometric Capacitor 3 および 4 用
Android のセットアップ手順
Android で生体認証を設定するには、プロジェクトファイルをいくつか調整する必要があります。
-
Manifest の設定
以下の権限を次に追加してください:
AndroidManifest.xmlファイル:<uses-permission android:name="android.permission.USE_BIOMETRIC" /> <!-- For Android 9 (API 28) or lower --> <uses-permission android:name="android.permission.USE_FINGERPRINT" /> -
Gradle のセットアップ
アプリの
build.gradleファイルに、必要な生体認証の依存関係を含めるように更新します:dependencies { implementation "androidx.biometric:biometric:1.1.0" }
iOS のセットアップ手順
iOS で生体認証を設定するには、以下の手順に従ってください:
-
Info.plist の設定
必要な使用目的の説明を以下に追加してください:
Info.plistファイル:<key>NSFaceIDUsageDescription</key> <string>Authentication required for secure access</string> -
Keychainの設定
XcodeでKeychainの機能を有効にします:
- プロジェクトの設定を開きます。
- 以下の Signing & Capabilities タブと比較します。
- 以下を追加します: Keychainの共有 機能(capability)。
- 必要に応じてアクセスグループを設定してください。
-
認証ポリシー
以下のケースに対応するローカル認証ポリシーを設定します:
- 認証の失敗
- デバイスのパスコードへのフォールバック
- 生体認証の利用可能性チェック
セキュリティを強化するため、機密データの保存には iOS Keychain を使用してください。これにより、ユーザーの認証情報を保護しながら、Touch ID と Face ID の両方との互換性を確保できます。
Code の実装
設定が完了したら、次は安全な code の実装です。適切なプラグインを選択し、信頼性の高い認証フローを構築する必要があります。
プラグイン選定ガイド
Capacitor アプリ向けの生体認証プラグインを選ぶ際は、プロジェクトの具体的な要件に合わせる必要があります。代表的な選択肢は以下の通りです:
| プラグイン名 | Capacitor バージョン | 主な機能 | 最適な用途 |
|---|---|---|---|
| @aparajita/capacitor-biometric-auth | Capacitor 8 | ネイティブ生体認証、デバイス認証情報、包括的な API | Capacitor 8 で始める新規プロジェクト |
| capacitor-native-biometric | Capacitor 3, 4 | 安全な認証情報の保存、Keychain/Keystore 連携 | 認証情報の管理が必要な既存プロジェクト |
| すべてのバージョン | 生体認証とデバイス認証情報による認証、クリーンな API | 柔軟な認証オプションが必要なプロジェクト |
認証 Code の例
以下の手順で @capgo/capacitor-native-biometric 生体認証プラグインを使用できます:
import { Biometrics } from '@capgo/capacitor-native-biometric';
async function setupBiometricAuth() {
try {
const { isAvailable } = await Biometrics.isBiometricsAvailable();
if (!isAvailable) {
return {
success: false,
message: "Biometric authentication not available"
};
}
const result = await Biometrics.authenticate({
reason: "Access your secure data",
title: "Verify Identity",
subtitle: "Use biometrics to authenticate",
cancelTitle: "Use Password Instead"
});
return {
success: true,
data: result
};
} catch (error) {
return {
success: false,
error: error.message
};
}
}
安全な認証情報の管理には、 capacitor-native-biometric プラグインがシンプルな方法を提供します:
import { NativeBiometric } from '@capgo/capacitor-native-biometric';
async function secureCredentialStorage(credentials) {
try {
await NativeBiometric.setCredentials({
username: credentials.username,
password: credentials.password,
server: "api.yourserver.com"
});
// Verify storage by retrieving the credentials
const stored = await NativeBiometric.getCredentials({
server: "api.yourserver.com"
});
return stored.username === credentials.username;
} catch (error) {
console.error("Credential storage failed:", error);
return false;
}
}
code の導入後は、適切なテストで機能を検証することが不可欠です。
テスト手法
生体認証の信頼性とセキュリティを確保するために、以下のテスト戦略を検討してください:
-
デバイス互換性テスト
さまざまなデバイスや条件下で認証が動作するか確認してください:
async function runCompatibilityTests() { const tests = { biometricAvailable: await Biometrics.isBiometricsAvailable(), credentialStorage: await testCredentialStorage(), authenticationFlow: await testAuthFlow(), fallbackMechanism: await testFallbackAuth() }; return tests; } -
エラーハンドリングとよくあるシナリオ
エラーをシミュレートし、フォールバックの仕組みをテストしてください:
async function validateErrorHandling() { try { await Promise.race([ Biometrics.authenticate(), new Promise((_, reject) => setTimeout(() => reject(new Error("Timeout")), 30000) ) ]); } catch (error) { return implementFallbackAuth(); } } -
セキュリティ検証
実装がセキュリティ基準を満たしているか確認してください:
async function validateSecurityMeasures() { const validations = { keychain: await validateKeychainAccess(), biometricStrength: await checkBiometricStrength(), encryptionStatus: await verifyEncryption() }; return validations.keychain && validations.biometricStrength && validations.encryptionStatus; }
さらに、以下のようなシナリオもテストしてください:
- 認証の失敗が複数回発生する場合
- デバイス再起動後の挙動
- アプリのフォアグラウンドとバックグラウンドの切り替え
- ネットワーク接続の変化
- システムの生体認証設定の更新
徹底的なテストを行うことで、生体認証システムが堅牢になり、実運用に耐えうるものになります。
セキュリティ基準
生体認証において強固なセキュリティを確保するには、データ保護の優先、コンプライアンス規制の遵守、そして多層的なセキュリティ技術の適用が不可欠です。
データセキュリティ手法
iOSでは、生体データは以下の仕組みで暗号化・保存されます: Keychain、一方Androidでは Keystoreを使用します。 capacitor-native-biometric pluginを使用している場合、ユーザーの認証情報を次のように安全に保存できます:
import { NativeBiometric } from '@capgo/capacitor-native-biometric';
async function securelyStoreCredentials(username, password) {
const server = "api.yourapp.com";
// Use the highest available encryption
await NativeBiometric.setCredentials({
username,
password,
server,
authenticationType: "biometricAndDevice",
accessControl: "biometryAny"
});
}
データの送信時には、機密情報を保護するために必ず エンドツーエンド暗号化 を実装してください。
ストアのガイドライン
各アプリストアでは、以下の項目に対して厳格なルールを設けています: 生体認証のセキュリティ主要なプラットフォームの要件を以下にまとめました:
| プラットフォーム | 主な要件 | 実装時の注意点 |
|---|---|---|
| iOS | LocalAuthenticationフレームワークを使用し、フォールバック手段を用意して、ユーザーの明確な同意を得られるようにしてください | Face IDとTouch IDの両方に対応する必要があります |
| Android | BiometricPrompt APIを活用し、ユーザーの明示的な許可を取得して、セキュリティレベルを宣言してください | 指紋や顔認証に対応し、セキュリティレベルに応じた使い分けが可能 |
多要素認証の設定
セキュリティを強化するには、多くの場合、 生体認証 に追加の認証レイヤーを組み合わせる必要があります。例えば、最初の 生体認証の後に、ユーザーの本人確認を行うための二次ステップを追加できます:
async function setupMultiFactorAuth() {
// First factor: Biometric verification
const biometricResult = await Biometrics.authenticate({
reason: "Verify your identity",
title: "Authentication Required"
});
if (biometricResult.verified) {
// Second factor: Time-based OTP or similar mechanism
const totpResult = await verifyTOTP();
return totpResult.success;
}
return false;
}
マルチファクタ方式には、通常以下が含まれます:
- 一次生体認証
- 二次検証 (例:SMS code や認証アプリ)
- トランザクションごとの確認 セキュリティを強化するために
Capgo のような Live Update ツールを使用している場合は、その機能を活用してセキュリティ基準への準拠を確実に行ってください。 エンドツーエンド暗号化 これにより、アップデート中も生体認証方式の安全性が保たれ、プラットフォームの要件に適合することが保証されます。 [1].
メンテナンスガイド
速度、バッテリー効率、そしてタイムリーなアップデートのバランスをとり、生体認証システムをスムーズに運用しましょう。
速度とバッテリーに関するTips
効率的な生体認証を実装するための code スニペットはこちらです:
// Efficient authentication implementation
async function optimizedBiometricCheck() {
const authResult = await NativeBiometric.isAvailable();
if (!authResult.isAvailable) {
return handleFallback();
}
// Cache authentication state to avoid unnecessary re-checks
if (this.cachedAuthState && !this.isAuthExpired()) {
return this.cachedAuthState;
}
return NativeBiometric.verifyIdentity({
reason: "Verify your identity",
title: "Authentication Required",
maxAttempts: 3
});
}
生体認証システムのパフォーマンスを最大限に引き出すには:
- 認証のバッチ処理: 認証プロンプトを何度も表示するのではなく、認証が必要なアクションを一つのセッションにまとめることで、ユーザーの妨げを減らします。
- スマートキャッシュ: 認証状態を安全に保存し、有効期限を設定することで、不要な再認証を防ぎます。
- バックグラウンドの最適化: 認証中に不要なタスクを一時停止し、速度向上とバッテリー消費の抑制を実現します。
- イベント駆動型アプローチ: 定期的なポーリングをイベントリスナーに置き換え、認証ステータスをより効率的に監視します。
Updates with Capgo

Capgo はアプリのアップデートを簡素化します。
Capgo がアップデート管理に最適な理由はこちらです:
- 即時デプロイ: 重要なセキュリティ修正や新機能を遅延なく配信できます。
- ステージドロールアウト: 全ユーザーに展開する前に、特定のユーザーグループでアップデートをテストできます。
- バージョン管理: 管理を容易にするため、異なる認証バージョンを追跡・管理できます。
- 緊急ロールバック: 問題が発生した際、すぐに前のバージョンへ戻せます。
API のアップデート
生体認証の API を最新の状態に保つことは、セキュリティと機能性の両面で不可欠です。以下のガイドラインに従って、積極的にアップデートを行いましょう:
| アップデートの種類 | モニタリング手法 | 実装タイムライン |
|---|---|---|
| セキュリティパッチ | プラグインリポジトリのアラート | 24時間 |
| 機能アップデート | プラットフォームドキュメント | 1週間 |
| 破壊的変更 | リリースノート | 2〜4週間 |
| ストアポリシーの更新 | デベロッパーポータル | 申請前に |
以下の点に注目してください:
- プラットフォームの変更: iOSのLocalAuthenticationとAndroidのBiometricPrompt APIの更新を追跡します。
- セキュリティ基準: 最新の生体認証セキュリティ要件に準拠します。
- ストアのガイドライン: App StoreやGoogle Playのポリシーを遵守し、アプリの審査落ちを防ぎます。
まとめ
まとめ
Capacitor アプリに生体認証を導入するには、セキュリティ、パフォーマンス、ユーザー体験のバランスが重要です。考慮すべき主要な要素を以下にまとめました:
| コンポーネント | 実装のポイント | 重要な検討事項 |
|---|---|---|
| セキュリティ基準 | プラットフォームネイティブのストレージ (Keychain/Keystore) | エンドツーエンド暗号化と認証情報の保護 |
| プラグインの選定 | 最新バージョンとの互換性 | 複数の生体認証タイプに対応 |
| アップデート管理 | 定期的なメンテナンスサイクル | セキュリティパッチの迅速なデプロイ |
| ユーザー体験 | フォールバック認証オプション | 分かりやすくユーザーフレンドリーな認証プロンプト |
これらのコンポーネントは、統合を成功させるためのロードマップとなります。
生体認証を実装する手順
アプリに生体認証を統合するには、以下の手順に従ってください:
-
プラグインの統合
まず、使用している Capacitor のバージョンに適合する生体認証プラグインを選択してください。また、以下のような設定ファイルがAndroidManifest.xmlとInfo.plist正しくセットアップされていることを確認してください。認証情報の安全な保存には、KeychainやKeystoreなどのネイティブソリューションを利用しましょう。 -
セキュリティ設定
すべての認証情報伝送にエンドツーエンド暗号化を適用し、ユーザーデータを保護します。必要に応じて、 機密システムでの多要素認証、 を追加してセキュリティレイヤーを強化してください。また、エラー発生時でも機能を維持できるよう、堅牢なエラーハンドリングとフォールバック策を計画しておきましょう。 -
継続的なメンテナンス
セキュリティパッチのための定期的なアップデートパイプラインを構築し、アプリの安全性を維持しましょう。プラグインの更新状況やセキュリティアドバイザリを常にチェックすることが重要です。Capgoのようなツールを使えば、インスタントアップデートが可能になり、このプロセスを簡素化できます。Capgoは、24時間以内のユーザーアップデート率が95%という驚異的な数値を誇り、開発ツールキットに欠かせない存在となっています。 [2].
「Capgo は、生産性を上げたい開発者にとって必須のツールです。バグ修正でストア審査を回避できるのは大きな強みです。」 - Bessie Cooper [2]
FAQ
::: FAQ
Capacitor向けの生体認証プラグインの違いは何ですか?また、アプリに最適なプラグインをどのように選べばよいでしょうか?
Capacitorアプリ向けの生体認証プラグインを選ぶ際は、プロジェクト固有の要件に合わせることが極めて重要です。以下の要素を検討してください: プラットフォームの互換性 (iOS、Android、またはその両方のサポートが必要か)、統合プロセスのシンプルさ、そして以下のような高度な生体認証方式に対応しているかどうか: Face ID または 指紋認証.
このガイドでは、主に以下の環境での生体認証の実装に焦点を当てています。 Capacitor アプリ, tools like Capgo 非常に重要な役割を果たします。これらを使用すると、App Store の審査を待たずにアプリへリアルタイムのアップデートを配信できます。これにより、Apple や Android の規約を遵守しながら、生体認証の更新を含む最新のセキュリティ機能をアプリに即座に反映させることが可能です。 :::
::: FAQ
Capacitor アプリの生体認証において、セキュリティ基準や App Store のガイドラインを確実に満たすにはどうすればよいでしょうか?
Capacitor アプリの生体認証を最新のセキュリティ基準や App Store のルールに適合させるには、以下の主要なプラクティスに従ってください:
- 信頼できるプラグインの選択: Capacitor が提供するような信頼性の高い生体認証プラグインを使用し、
@capacitor/biometricsアプリのセキュリティを確保し、デバイス間でシームレスに動作するようにします。 - プラットフォームのルール遵守: ユーザーの同意取得、セキュアなストレージの使用、PIN やパスワードによるバックアップ手段の提供など、Apple と Android のガイドラインを遵守してください。
- 依存関係を最新に保つ: 脆弱性を修正し、変化する標準規格に対応するため、アプリとライブラリを定期的にアップデートしてください。
live update のようなサービスを Capgo can make this process smoother. It allows you to push security updates or improvements to your app instantly, bypassing app store approval delays. This keeps your app secure, compliant, and up-to-date with Apple and Android policies. :::
::: FAQ
Capacitor アプリに生体認証を組み込む際、開発者はどのような課題に直面し、それをどう克服すべきでしょうか?
Capacitor アプリへの生体認証の実装には、いくつかの課題が伴います。デバイス間の互換性の確保、ユーザー権限の適切な管理、機密データの安全な取り扱いなどが挙げられます。これらの問題への対処法を以下に紹介します:
-
デバイスの互換性: AndroidとiOSの両方で生体認証機能をサポートするには、
@capacitor-fingerprint-authなどのプラグインの使用を検討してください。これらのツールはプラットフォーム間の差異を埋め、多様なデバイスでアプリがシームレスに動作するように支援します。 -
ユーザー権限: アプリがなぜ生体認証へのアクセスを必要としているのか、その理由を明確に説明することが重要です。ユーザーに対して透明性の高い情報を提供し、ユーザーが権限の許可を選択しなかった場合でも、アプリがスムーズに動作するように設計してください。
-
データのセキュリティ: 認証データの保護は極めて重要です。以下の 暗号化のベストプラクティス に従い、各プラットフォームが提供するセキュリティガイドラインを遵守して、機密情報を安全に保ってください。
App Storeの審査を待つことなく、生体認証機能に関するアップデートや問題修正を行うには、Capgo のようなツールが活用できます。これにより、AppleやAndroidのポリシーを遵守しながら、バグ修正や機能改善をリアルタイムで行うことが可能になります。 :::
続き:Capacitor アプリにおける生体認証
以下を使用している場合: Capacitor アプリにおける生体認証 セキュリティとコンプライアンスの計画に使う場合は、以下と連携してください: 暗号化 実装の詳細は「暗号化」を参照: コンプライアンス 実装の詳細は「コンプライアンス」を参照: Capgo セキュリティスキャナー Capgo セキュリティスキャナーの製品ワークフローについては: Capgo セキュリティ Capgo Security でのプロダクトワークフロー向け、および Capgo トラストセンター Capgo Trust Center でのプロダクトワークフロー向け。