我有一个自定义身份验证器,我想将用户/密码公开给其他应用程序。为了防止任何随机应用程序获取凭据,我想在我的自定义身份验证器的getAuthToken()
方法中执行权限检查之类的操作。什么是正确的方法?
我试过这个,
int p = context.checkCallingPermission("com.whatever.AUTH");
if (p != PackageManager.PERMISSION_GRANTED) {
在托管我的身份验证器的应用程序中定义了“com.whatever.AUTH”,
<permission android:name="com.vmware.horizon.AUTH" />
uses-permission
但是,在我的清单中没有的测试应用程序中,当我请求帐户时,
AccountManagerFuture<Bundle> future = am.getAuthToken(new Account(
"com.whatever", "com.whatever"),
"com.whatever", new Bundle(), this,
new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> future) {
String token = result.getString(AccountManager.KEY_AUTHTOKEN);
}
}, handler);
我成功获得了身份验证令牌。调试显示对我的身份验证器getAuthToken()
方法的调用发生了,但检查权限调用返回“已授予”。
编辑:如果我从我用来调用checkCallingPermission()
它的上下文中获取包名称,则它是托管自定义身份验证器的应用程序的包名称。如果我得到调用 PID,UID 它们分别是 0 和 1000。
有任何想法吗?