Android AccountManager - 限制对getAuthToken的访问

时间:2016-10-08 00:22:17

标签: android android-permissions accountmanager

AccountManager允许与Account Authenticator具有相同签名的应用访问帐户和令牌,而无需授予权限。如果签名不同,系统将提示用户授予应用程序GET_ACCOUNTS权限。

如果您不想允许该怎么办?是否可以限制只能访问您的应用?

当我阅读以下内容时,我很有希望,但我不确定这句话对你如何实施这个建议意味着什么:

  

如果凭据仅由您创建的应用程序使用,则可以使用checkSignature()验证访问AccountManager的应用程序

https://developer.android.com/training/id-auth/custom_auth.html#Security

1 个答案:

答案 0 :(得分:0)

原始答案:AccountManager and signature check

简而言之:

public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account,
                       String authTokenType, Bundle bundle) {
try {
    PackageManager packageManager = context.getPackageManager();
    String callerPackageName = bundle.getString("androidPackageName");
    // Caller app must be signed with the same key to get the auth token
    int signatureResult = packageManager.checkSignatures(BuildConfig.APPLICATION_ID,
            callerPackageName);
    if (signatureResult >= PackageManager.SIGNATURE_MATCH) {
        return [bundle with the auth token];
    } else {
        return Bundle.EMPTY;
    }
}