認証後に"uyhjjfjfgg567f8fhjkkf"
今、デバイスに安全に保存したい。 Android開発者向けサイトのキーストアとキーチェーンを調べました。それがどのように機能し、キーストアからトークンを取得する方法を明確に理解していません。
KeyPairGenerator kpg = KeyPairGenerator.getInstance(
KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore");
kpg.initialize(new KeyGenParameterSpec.Builder(
alias,
KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
.setDigests(KeyProperties.DIGEST_SHA256,
KeyProperties.DIGEST_SHA512)
.build());
KeyPair kp = kpg.generateKeyPair();
/*
* Load the Android KeyStore instance using the the
* "AndroidKeyStore" provider to list out what entries are
* currently stored.
*/
KeyStore ks = KeyStore.getInstance("AndroidKeyStore");
ks.load(null);
Enumeration<String> aliases = ks.aliases();
とにかく寿命が短いため、アクセストークンを保存する必要はありません。メモリに保存しておくだけで十分です。
更新トークンを保持する必要があります。そのためのオプションがいくつかあります。
SharedPreferences
を使用してAccountManager
を使用するStoredCredential
の使用を検討してください。フロー自体については、 Google AppAuthライブラリ を使用することをお勧めします。
もちろん、暗号を使用してキーを暗号化することもできます。
private static byte[] encrypt(byte[] key, byte[] text) throws GeneralSecurityException {
final SecretKeySpec skeySpec = new SecretKeySpec(key, KEY_ALGORITHM);
final Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, sInitVectorSpec);
return cipher.doFinal(text);
}
キーはKeyStore
に保存できます。
こちら Android Security。
Androidキーストアの実装の包括的な例は here にあります。
また、別の優れたオプションは Googleのkeyczar です。これは、サンプルや詳細についてはgitリポジトリで確認できます。また、 Known Security Issues の詳細なリストを見つけることができるので、それがさらに実装に適しているかどうかを確認できます。
現在の問題については、上記の2番目のリンクの実装例に従ってAndroid Keystoreを実行することをお勧めします。
幸運を !
追加時にはキーと値を暗号化し、リクエスト時には復号化するカスタムSharedPreferenceインスタンスを使用します。
SecurePreferences preferences = ...
preferences.edit().putString( "key", "value" ).apply(); // key and value are encrypted automatically
String value = preferences.getString( "key", null ); // key and value are decrypted automatically
値が暗号化されている場合にのみSharedPreferencesを使用することをお勧めします。xmlファイルはアプリでのみ使用可能ですが、ルート化されたデバイスでアクセスできるためです。
既にSqlLiteDBを使用している場合は、おそらくそれを使用します。そうでない場合、トークンを保存するだけでは少し重いです。
編集:
oauthトークンは、アプリの署名に使用されるキーおよびキーストアとはまったく関係ありません。
oauthトークンは、アプリ内でユーザーの資格情報を検証した後にサーバーによって提供されるトークンです。
キーストアには、アプリにデジタル署名するために使用される1つ以上の証明書が含まれています。これは、他の人があなたと同じパッケージ名を持つアプリをアップロードして置き換えることを防ぐためです。