Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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
Java 如何在Android 5.0(API 21)之前确认设备凭据?_Java_Android - Fatal编程技术网

Java 如何在Android 5.0(API 21)之前确认设备凭据?

Java 如何在Android 5.0(API 21)之前确认设备凭据?,java,android,Java,Android,我有一个需要用户确认设备凭证的用例,KeyguardManager中的createConfirmDeviceCredentialIntent方法完全满足了我的需要。但是,这个方法是从API 21开始添加的。(),那么在Android 5.0之前,我如何实现相同的功能呢?我还想支持像Android 4.X这样的版本 谢谢 在21级之前,这在非根设备上肯定不可能实现,并且没有常规权限的替代方案 如果可以要求额外的管理员权限,则可以通过实现来模拟非常松散的凭证确认。密码成功后,锁定屏幕,执行所需操作。

我有一个需要用户确认设备凭证的用例,KeyguardManager中的createConfirmDeviceCredentialIntent方法完全满足了我的需要。但是,这个方法是从API 21开始添加的。(),那么在Android 5.0之前,我如何实现相同的功能呢?我还想支持像Android 4.X这样的版本


谢谢

在21级之前,这在非根设备上肯定不可能实现,并且没有常规权限的替代方案

如果可以要求额外的管理员权限,则可以通过实现来模拟非常松散的凭证确认。密码成功后,锁定屏幕,执行所需操作。这可能会变得相对复杂,因为操作并不总是被接收(只有在状态发生变化时),需要保持最后的成功,与接收者进行通信,等等

作为旁注,请仔细检查用例和您的设计,在大多数情况下,当使用createConfirmDeviceCredentialIntent时,实际上并不需要它,其他设计选择可能会消除对它的需要


最好提供您正试图保护的内容的详细信息。如果是未经授权的人意外访问设备的场景,并且从某个oauth服务生成永久令牌,可以通过相同的服务登录流重新授权,或者存储一些原始凭证的hmac以及令牌,然后提示并重新验证凭证,而不是提示输入设备凭证。或者,如果这对于用例来说已经足够了,您可以使用来授权访问您的应用程序/令牌,并验证google用户是否与存储的令牌相同。

在21级之前,这在非根设备上肯定是不可能的,并且没有常规权限的替代方案

如果可以要求额外的管理员权限,则可以通过实现来模拟非常松散的凭证确认。密码成功后,锁定屏幕,执行所需操作。这可能会变得相对复杂,因为操作并不总是被接收(只有在状态发生变化时),需要保持最后的成功,与接收者进行通信,等等

作为旁注,请仔细检查用例和您的设计,在大多数情况下,当使用createConfirmDeviceCredentialIntent时,实际上并不需要它,其他设计选择可能会消除对它的需要


最好提供您正试图保护的内容的详细信息。如果是未经授权的人意外访问设备的场景,并且从某个oauth服务生成永久令牌,可以通过相同的服务登录流重新授权,或者存储一些原始凭证的hmac以及令牌,然后提示并重新验证凭证,而不是提示输入设备凭证。或者,如果这对于用例来说已经足够了,您可以使用来授权访问您的应用程序/令牌,并验证google用户是否与存储的令牌相同。

我看到的关于这种情况的最佳答案在博客文章中描述:


但是,它会重新创建私有的系统类,并调用非公共的AOSP代码。我的奖赏是为了得到一个更好的答案,它不需要在项目内部显式地命名类。也许智能锁或另一个很棒的安全库可以用于我所需要的向后兼容性。

我所看到的关于这种情况的最佳答案在一篇博客文章中描述:


但是,它会重新创建私有的系统类,并调用非公共的AOSP代码。我的奖赏是为了得到一个更好的答案,它不需要在项目内部显式地命名类。也许可以使用智能锁或另一个很棒的安全库来实现我所需的向后兼容性。

您可能需要自己实现它。这个@danny zheng幸运吗?您可能需要自己实现它。这个@danny zheng幸运吗?这个问题似乎没有办法用这些私有API强制进行pin确认。一旦手机解锁,它将被解锁,因此您只需在打开的手机上获得安全存储,而无需进行保护挑战。如果您的目的仅仅是为了回答一个不同的问题,它与所问的问题不同,因为这不是createConfirmDeviceCredentialIntent确认的替代品。但它是。。。博客帖子中的pin确认用户界面使用Android系统时处于危险路径:
尝试{if(Build.VERSION.SDK_INT
Bounty正在运行,以获得一个更合法的向后兼容库,用于本地身份验证?除了将我的用户发送回我的服务器进行键入之外,还有其他方法吗?这不仅是一条危险的路径(嗯,没有那么危险),它的工作方式可能与人们想象的不一样。一旦商店解锁(包括手机解锁),它将不再提示输入pin,发送解锁意图将不会弹出任何内容,而且AFAIK无法强制auth以这种方式弹出。因此,原始问题的答案-没有替换(因此您的问题不同)。任何在未经设备确认的情况下使用前保护令牌的方法都需要用户提供一些自定义信息,因为您无法使用设备确认(我概述的锁定解决方案除外)。如果您不想在我的回答中使用锁定路径,最好让用户输入原始登录名,而不是使用其他自定义信息。但您不必返回服务器进行验证。因为您提到谷歌登录->该应用程序支持不同的权限和帐户类型。这些