首页 文章

安全性 - Android应用程序只有在之前发生有效的在线登录时才允许离线登录

提问于
浏览
3

我有一个正在开发的应用程序,要求用户能够在离线(远程位置)时使用它 . 目标是拥有一个需要用户进行身份验证的登录 . 如果在线,身份验证将使用oauth令牌 . 但是,如果脱机,则不会发生令牌验证 . 所以,我想允许用户使用本地存储的信息进行身份验证 .

提案:

  • 请求正确的凭据 - >用户输入用户名和密码

  • 如果在线,继续使用oauth令牌,

一个 . 如果成功,则存储AES加密的用户名/密码盐
湾如果不成功,请重新申请正确的凭据

  • 如果离线,使用与上述相同的加密,加密用户名/密码组合

  • 根据步骤2a中保存的最近成功在线登录列表测试脱机加密凭证 .
    一个 . 如果信用卡与其中一个已保存的版本匹配,则可以在离线模式下访问应用和本地数据
    湾如果信用证不匹配,则重新申请正确的信用证

Question :存储本地加密的combo un pw salt是否会影响在线登录过程的安全性?进一步的想法/建议?

感谢您的参与 .

2 回答

  • 1

    您的要求仅适用于共享首选项

    public class MySession {
        private SharedPreferences sharedPref;
        private static Editor editor;
    
        public static final String My_API_KEY = "1234";
        public static final String My_CLIENT_VERSION = "1.0";
        private static final String My_API_TOKEN = "api_token";
        private static final String My_USER_SCREEN_NAME ="profilepic";
        private static final String SHARED = "my_Preferences";
    
        public MySession(Context context) {
            sharedPref = context.getSharedPreferences(SHARED, Context.MODE_PRIVATE);
            editor = sharedPref.edit();
        }
        public void storeToken(String apiToken) {
            editor.putString(My_API_TOKEN, apiToken);       
            editor.commit();
        }
        public String getToken() {
            return sharedPref.getString(My_API_TOKEN,null);     
        }
    }
    
  • -4

    首次询问用户登录详细信息 . 验证后连接用户名和密码,并使其md5 / sha1 . 将其存储在共享首选项或本地sqlite db中 .

    下次用户离线时请求登录详细信息,连接并从同一保存的位置进行验证 .

    sha1 / md5是单向加密,无法解密 . 因此登录详细信息在设备中始终是安全的 .

相关问题