Используйте Android поставщика хранилища ключей для аутентификации клиента - PullRequest
0 голосов
/ 06 мая 2020

У меня есть вариант использования: получить сертификат, установленный на устройстве Android, и отправить этот сертификат с запросом Https для аутентификации клиента с сервером. Я использую самозаверяющие сертификаты, поэтому, когда я устанавливаю файл .pfx, он обычно попадает в учетные данные пользователя. Поэтому, чтобы получить сертификат из пользовательского хранилища, я попробовал что-то вроде этого:

try
{
    var certs = KeyChain.GetCertificateChain(Context, "Test");

    var pk = KeyChain.GetPrivateKey(Context, "Test");
}
catch (Exception)
{
}

Но выполнение приведенного выше кода дало мне ошибку:

java.lang.IllegalStateException: uid 10088 doesn't have permission to access the requested alias

Итак, после некоторого исследования, Я обнаружил, что мы должны добавить приведенную ниже строку кода, чтобы пользователи могли выбирать сертификат из диалогового окна, что эквивалентно разрешению на использование сертификата «Тест»:

KeyChain.ChoosePrivateKeyAlias(mainActivity, this, null, null, null, -1, "Test");

Но для моего варианта использования , пользователь не должен знать о фоновых действиях. Итак, мой вопрос: есть ли способ пропустить вызов KeyChain.ChoosePrivateKeyAlias и всегда давать разрешение на использование сертификата «Test», чтобы пользователю не приходилось выбирать. Или на основе этой статьи Я должен использовать Android поставщика хранилища ключей. Но я не нашел ни одного примера для Android поставщика хранилища ключей, используемого для аутентификации клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...