Estoy tratando de entender a Android AccountManager y OAuth. Lo que me gustaría hacer es que el teléfono no tenga acceso a la contraseña. (Eso es lo que sugiere Google: "Be Smart About Security!") Por lo tanto, comprobé la aplicación de ejemplo de Google SampleSyncAdapter y comencé a leer el código. Entonces veo que esto suceda en AuthenticatorActivity:SampleSyncAdapter almacenar contraseña texto sin formato?
private AccountManager mAccountManager;
private String mPassword;
/**
* ... Sets the
* AccountAuthenticatorResult which is sent back to the caller. We store the
* authToken that's returned from the server as the 'password' for this
* account - so we're never storing the user's actual password locally.
*
* @param result the confirmCredentials result.
*/
public void handleLogin(View view) {
....
mPassword = mPasswordEdit.getText().toString();
....
Log.d(TAG, "mPassword set to Account:" + mAccountManager.getPassword(account));
}
private void finishLogin(String authToken) {
....
mAccountManager.addAccountExplicitly(account, mPassword, null);
....
}
mensaje de este registro es "mPassword establece en cuenta: la prueba". Esto es de alguna manera comprensible cuando se lee el resto debido a esto
protected String doInBackground(Void... params) {
....
return NetworkUtilities.authenticate(mUsername, mPassword);
....
}
si la contraseña era una muestra que esto no iba a funcionar.
También podría esperar que el resto del código funcione de manera diferente en Authenticator en getAuthToken() Supongo que estoy completamente equivocado sobre algo, pero solo quiero usar AccountManager para almacenar el resultado de un "baile" de OAuth para que Puedo usar esta Cuenta para autenticar mi servicio JSON RESTful.
¿Alguien puede alumbrar esto?
¿Qué sucede si el token invalida después de un cierto período de tiempo? Supongo que solo tiene que volver a solicitar al usuario su contraseña en ese caso. Pero muchos servicios (p. Ej., Facebook) nunca me piden una contraseña, así que 1) el token que generan nunca expira, por lo que es básicamente tan bueno como una contraseña en términos de seguridad, o 2) están almacenando mi contraseña (texto sin formato) o encriptado). –