Android MobileHub存储API密钥的位置

Android MobileHub存储API密钥的位置,android,java-native-interface,amazon-cognito,api-key,aws-mobilehub,Android,Java Native Interface,Amazon Cognito,Api Key,Aws Mobilehub,我正在基于mobile hub示例应用程序构建一个应用程序。示例应用程序的API密钥存储在类文件AWS配置中: public class AWSConfiguration { // AWS MobileHub user agent string public static final String AWS_MOBILEHUB_USER_AGENT = "MobileHub ********* aws-my-sample-app-android-v0.16"

我正在基于mobile hub示例应用程序构建一个应用程序。示例应用程序的API密钥存储在类文件AWS配置中:

public class AWSConfiguration {
    // AWS MobileHub user agent string
    public static final String AWS_MOBILEHUB_USER_AGENT =
            "MobileHub ********* aws-my-sample-app-android-v0.16";
    // AMAZON COGNITO
    public static final Regions AMAZON_COGNITO_REGION =
            Regions.fromName("us-east-1");
    public static String  AMAZON_COGNITO_IDENTITY_POOL_ID =     "us-east-************6";

    // Google Client ID for Web application
    public static  String GOOGLE_CLIENT_ID ="";//"*********************.apps.googleusercontent.com";


    public static final Regions AMAZON_DYNAMODB_REGION =
            Regions.fromName("us-east-1");
    public static  String AMAZON_COGNITO_USER_POOL_ID =   "************";


    public static  String AMAZON_COGNITO_USER_POOL_CLIENT_ID =   "*************";



    public static  String AMAZON_COGNITO_USER_POOL_CLIENT_SECRET =  "*************";

    private static final AWSMobileHelperConfiguration helperConfiguration = new AWSMobileHelperConfiguration.Builder()
            .withCognitoRegion(AMAZON_COGNITO_REGION)
            .withCognitoIdentityPoolId(AMAZON_COGNITO_IDENTITY_POOL_ID)
            .withCognitoUserPool(AMAZON_COGNITO_USER_POOL_ID,
                    AMAZON_COGNITO_USER_POOL_CLIENT_ID, AMAZON_COGNITO_USER_POOL_CLIENT_SECRET)
            .build();
    /**
     * @return the configuration for AWSKit.
     */
    public static AWSMobileHelperConfiguration getAWSMobileHelperConfiguration() {

        return helperConfiguration;
    }



}
以这种方式存储客户端密钥似乎不安全。有哪些风险?

我尝试过在JNI文件中隐藏密钥,但在从移动助手调用密钥之前,无法在活动中找到正确的入口点来设置密钥。

可能是一个解决方案。 密码或类似的内容存储在中

可以是一个解决方案。
密码或类似的内容存储在中

正如您所猜测的,以明文存储通常是个坏主意。您可以使用android密钥库,将其加密存储(密钥越强越好),使用设备的某个唯一标识符将其混淆,或者通过您控制和保护的API访问它。有可能使用其他解决方案,或上述各种可能性的组合。最后的决定取决于你和你的应用程序需要什么/功能,但有几种方法可以隐藏它。

正如你所猜测的,以明文存储通常是个坏主意。您可以使用android密钥库,将其加密存储(密钥越强越好),使用设备的某个唯一标识符将其混淆,或者通过您控制和保护的API访问它。有可能使用其他解决方案,或上述各种可能性的组合。最终的决定取决于你和你的应用程序需要什么/能力,但有几种方法可以隐藏它