セキュアなセッション復元
SDK では、一部のプラットフォームでネイティブのセキュアストレージを利用してセッションウォレット情報を安全に保存するオプションを提供しています。
セッションの復元
デフォルトでは、アプリを完全に終了するたびにユーザーは再度サインインが必要です。これは、ユーザーの安全のため、セッションウォレット情報(例:秘密鍵)を永続的なストレージに保存しないためです。
ただし、一部のプラットフォームでは、プラットフォーム独自のセキュアストレージと連携しています。
SequenceConfig
の ScriptableObject で StoreSessionPrivateKeyInSecureStorage
を有効にすると、(対応プラットフォームでは)セッションウォレット情報が自動的に保存され、SequenceLogin
でセッション復元を試みることができます。デフォルトの LoginPanel
では、このUIフローも自動的に処理されます(詳細は 認証 をご覧ください)。非対応プラットフォームでは、このフラグは効果がありません。
対応プラットフォームや各プラットフォームのセキュアストレージについては下記をご覧ください。これらのシステムの基本的な仕組みや、秘密鍵(またはその他の機密情報)を永続ストレージに保存する際のセキュリティリスクについて十分に理解しておくことが重要です。
iOS
iOS では、iOS Keychain を利用しています。
MacOS
MacOS では、MacOS Keychain を利用しています。
Windows
Windows PC では、Crypto: Next Generation - Data Protection API (CNG DPAPI) を利用しています。
Web
Web ビルドでは、PlayerPrefs を通じて IndexedDB を利用しています。
Android
Android ビルドでは、Android Keystore を利用しています。
まず最初に、AndroidKeyBridge.java
プラグインを Assets フォルダにインポートします。これはパッケージマネージャーのサンプルから行うのが最も簡単です。Android Secure Storage
というサンプルをインポートしてください。
Unity 用の Keystore プラグイン(SDK に含まれています)には、カスタム Main Gradle テンプレートが必要です。Project Settings で Player > Publishing Settings
に進み、Custom Main Gradle Template
を有効にしてください。これにより、Assets/Plugins/Android/mainTemplate.gradle
(または類似のパス、エディターで確認可能)が作成されます。まだファイルがない場合は、以下のサンプル mainTemplate.gradle
ファイルをコピー&ペーストしてください(既存ファイルに組み込んでも構いません)。
Keystore プラグインには、カスタム Gradle Properties テンプレートも必要です。同様に Project Settings の Player > Publishing Settings
で Custom Gradle Properties Template
を有効にしてください。これにより、Assets/Plugins/Android/gradleTemplate.properties
(または類似のパス、エディターで確認可能)が作成されます。まだファイルがない場合は、以下のサンプル gradleTemplate.properties
ファイルをコピー&ペーストしてください(既存ファイルに組み込んでも構いません)。
Troubleshooting
Android でセキュアストレージや Google サインインに問題が発生した場合は、以下のトラブルシューティング手順をお試しください。
- Google サインイン:
AndroidManifest.xml
ファイル内のdata android:scheme
の値が、SequenceConfig.asset
ファイルのUrl Scheme
と一致しているか確認してください。すべて小文字で記載されていることもご確認ください。 - セキュアストレージ:
mainTemplate.gradle
でandroidx.security:security-crypto
プラグインが正しく定義されており、他のプラグインや Android Plugin Resolver によって上書きされていないことを確認してください。 - デモをお試しください: デモビルドをインストール し、お使いのデバイスで正常に動作するかご確認ください。
- Unity プロジェクトの設定(AndroidManifest、gradle ファイル、Android プレイヤー設定)を、弊社の SDK プロジェクト と比較してください。
- 追加のアイデア: 新しいビルドをインストールする前にアプリをアンインストールする、URL スキームやバンドル ID を変更する、などもお試しください。
エディター
エディター上では、秘密鍵の保存に PlayerPrefs を使用しています。エディター内でセキュアストレージを利用しセッションを復元するには、SequenceConfig で ‘EditorStoreSessionPrivateKeyInSecureStorage’ を有効にしてください。このフラグを分けていることで、ビルドの挙動を変更せずに両方のフローをテストできます。エディターでのセキュアストレージは開発用途のみであり、長期保存には適していません。