私はAndroidアプリケーションを持っています。私はaws秘密の資格情報を使用して、現在私はコードでそれをハードコードしている。秘密の資格情報を安全に保管する方法
外部パラメータとして資格情報を渡すことで、Androidアプリを安全に配備する方法はありますか。私たちがサーバアプリケーションで行うように、環境変数として資格を渡します。私は自分のコードベースで秘密鍵を開けたくありません。
Androidアプリで同様のことをする方法があるかどうかを知りたかったのです。
私はAndroidアプリケーションを持っています。私はaws秘密の資格情報を使用して、現在私はコードでそれをハードコードしている。秘密の資格情報を安全に保管する方法
外部パラメータとして資格情報を渡すことで、Androidアプリを安全に配備する方法はありますか。私たちがサーバアプリケーションで行うように、環境変数として資格を渡します。私は自分のコードベースで秘密鍵を開けたくありません。
Androidアプリで同様のことをする方法があるかどうかを知りたかったのです。
ビルド中に、Envirnoment Variablesをapkに渡す以下のメソッドが見つかりました。これらはビルド変数として保存されます。プロジェクトディレクトリで
gradle.propertiesファイルを作成し、資格情報を追加します。
AWS_CRED=aws_cred
あなたのGradleのビルドファイルには、アンドロイドの下に次の行を追加します。
android {
defaultConfig{
manifestPlaceholders=[AWS_CRED:AWS_CRED]
}
}
これは何され、あなたのアンドロイドマニフェストにビルド変数を渡します。今のAndroidManifest.xmlに移動して、タグの下に次の行を追加します。
<application
<meta-data
android:name="AWS_CRED"
android:value="${AWS_CRED}" />
</application>
以下のように今、任意のJavaコード内の値にアクセス:この方法は私のために働いた
applicationInfo = getApplicationContext().getPackageManager().getApplicationInfo(getApplicationContext().getPackageName(), PackageManager.GET_META_DATA);
、たら、コメントしてください誰もがそれを行うためのより良い方法を知っています。
セットアップによっては、これを行う方法はいくつかあります。おそらく最も安全な方法は、アプリケーションインスタンスに必要なアクセス許可を持つ役割を引き受け、資格情報をまったく格納する必要がないことです。 http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html
私はEnvironment variables
のと同じ原理を使用しますが、Gradleの通過になります。
さらに読書はあなたが始めるのに十分でなければなりません。
考えられるのは、Gradleがピックアップのプロパティを取得できるユーザーフォルダにgradle.propertiesというファイルがあるということです。もちろん、このファイルはソース管理に追加されません。
あなたは後に(この
〜/ .gradle/gradle.properties
projectAwsCred1=cred1
projectAwsCred2=cred2
build.gradle(アプリ)
...
buildConfigField "String", "AWS_CRED_1", "\"projectAwsCred1\""
buildConfigField "String", "AWS_CRED_2", "\"projectAwsCred2\""
ような何かを行うことができますし、ビルド)あなたは通常のようにあなたのコードでそれを呼び出すことができますBuild.AWS_CRED_1
この方法では、あなたの認証情報はあなたのアプリで焼き付けられますが、ビルド時にのみ使用されます。 READMEにこれを文書化して、他人(または将来のあなた)がprojectAwsCred*
情報を置くことが分かるようにする必要があります。
お返事ありがとうございます、 –
お返事ありがとうございました –