如何在android中存储client_secret

时间:2015-02-17 06:54:39

标签: android oauth-2.0 signature

我有一个API,我将从Android应用程序调用。身份验证是使用oauth2,我有ressource owner password - 流。 因此,当我想获得一个accessstoken时,我需要用户名,密码,clientId和clientSecret。

我的问题是:如何在我的应用程序中存储clientSecret?我读到有人以字节存储它,并在需要时生成字符串。 我的想法是使用签名(SHA)作为clientSecret。 所以我发现了这个功能:

private String getKeyHash(String packagename)
{
    String hash = "";
    try
    {
        PackageInfo info = getPackageManager().getPackageInfo(packagename,     PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures)
        {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String sign= Base64.encodeToString(md.digest(), Base64.DEFAULT);
            Log.e("MY KEY HASH:", sign);
            Toast.makeText(getApplicationContext(),sign,     Toast.LENGTH_LONG).show();
        }
    }
    catch (PackageManager.NameNotFoundException e)
    {

    }
    catch (NoSuchAlgorithmException e)
    {

    }
    return hash;
}

哪种解决方案更好/最安全? 或者有更好的方法吗?

0 个答案:

没有答案