Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android验证器存储加密安全令牌_Android_Csr_Spongycastle_Authenticator - Fatal编程技术网

Android验证器存储加密安全令牌

Android验证器存储加密安全令牌,android,csr,spongycastle,authenticator,Android,Csr,Spongycastle,Authenticator,我正在使用spongeycastle PKCS10CertificationRequest CSR向RESTful证书颁发机构进行身份验证。 我正在考虑使用Android验证器 根据: 重要的是要了解AccountManager不是加密工具 服务或钥匙链。它会在您通过时存储帐户凭据 它们是纯文本的。在大多数设备上,这并不是一个特别的问题, 因为它将它们存储在只有root用户才能访问的数据库中。 但在根设备上,任何人都可以读取凭据 通过adb访问设备 记住这一点,您不应该将用户的实际密码传递给 A

我正在使用spongeycastle PKCS10CertificationRequest CSR向RESTful证书颁发机构进行身份验证。 我正在考虑使用Android验证器

根据:

重要的是要了解AccountManager不是加密工具 服务或钥匙链。它会在您通过时存储帐户凭据 它们是纯文本的。在大多数设备上,这并不是一个特别的问题, 因为它将它们存储在只有root用户才能访问的数据库中。 但在根设备上,任何人都可以读取凭据 通过adb访问设备

记住这一点,您不应该将用户的实际密码传递给 AccountManager.AddAccountExplicit()。相反,您应该存储一个 加密安全的令牌,仅限用户使用 攻击者

我的问题是: 我不确定在这种情况下存储加密安全令牌意味着什么。 在Android Java中,该令牌是什么样子(它的类型?)? 在哪里存放?在钥匙链中??
在AdAcQueCurrimyLyType(?)/P> < PW中除了PW以外的任何其他上下文中使用的令牌,如果您的设备具有丰富的输入功能(因此用户可以输入用户名\密码),您可能需要考虑使用像AUTH之类的东西。在这种情况下,您的应用程序从不保留实际用户密码,而是在每个身份验证会话中只向服务器发送一次,并返回JWT(JSON web令牌)。这是一个带有一些信息(例如,带有指向用户资源id或uuid的链接)和TTL参数的令牌,该参数使用密钥进行安全签名。此密钥仅存在于服务器上,因此服务器之外的任何人都无法生成有效令牌

因此,在验证请求之后,您可以将JWT本地保存并在“Authorization”头中使用它,或者在每个API查询中使用它作为请求字段(第一个选项更好,因为请求主体可以显示在日志中)。您应该在该令牌过期之前续订该令牌,如果该令牌已过期,则要求用户再次输入其凭据。从服务器端收到一个请求,验证一个令牌(它是用服务器密钥签名的,不是过期了吗?)。您甚至不需要在服务器上保留令牌,但如果您想要对身份验证进行更多控制,例如,如果您想要从应用程序工作流外部撤销令牌,则可能需要这样做

JWT站点上有一个包含许多不同语言的JWT库的列表。例如,对于Elixir\Phoenix,您可能需要使用。在一个简单的例子中,您甚至不需要使用专门的工具来使用JWT,只需将令牌作为纯文本字符串放入“Authorization”头并向服务器发送请求即可。但是,如果您想获取(解码)服务器从应用程序端放入令牌的信息或检查令牌过期时间,那么您需要使用jwt站点上提供的库之一