Как безопасно получить учетные данные с сервера в приложении android? - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь использовать библиотеку Google Speech-to-Text API в моем приложении Android. Вот пример клиентского кода от Google на Kotlin здесь .

У него есть фрагмент кода:

        // NOTE: The line below uses an embedded credential (res / raw / sa.json).
        // You should not package a credential with real application.
        // Instead, you should get a credential securely from a server.
        context? .resources? .openRawResource (R.raw.credential).use {
            SpeechClient.create (
                SpeechSettings.newBuilder ()
                    .setCredentialsProvider {GoogleCredentials.fromStream (it)}
                    .build ())
        }

Мое приложение имеет внутренний сервер. Как на самом деле «получить учетные данные безопасно с сервера»? Есть ли примеры?

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

Я нашел ответ на свой вопрос здесь

Настройка аутентификации с использованием учетных данных вашего проекта. Это приложение Android использует файл учетных данных JSON, локально хранящийся в ресурсах. , Вы не должны делать это в вашем производственном приложении. Вместо этого вы должны настроить свой собственный сервер, который аутентифицирует пользователей приложения. Сервер должен делегировать вызовы API из вашего клиентского приложения . Таким образом, вы можете установить квоту использования для каждого пользователя. В качестве альтернативы вы должны получить токен доступа на стороне сервера и снабдить его клиентским приложением. Срок действия маркера доступа скоро истечет.

0 голосов
/ 07 апреля 2020

Ссылка , предоставленная Джоном, должна дать вам некоторое представление о том, как идентифицировать использование OAuth для приложения веб-сервера.

Более подробно с вашим реальным делом вы можете ознакомиться OAuth 2.0 для мобильных и настольных приложений , точнее в AppAuth для Android библиотеки. Вы можете следовать этому codelab , как предложено в официальной документации.

Редактировать: Если вышеизложенное бесполезно, то, я полагаю, вас больше интересует Настройка аутентификации для серверных производственных приложений сервера .

Если клиенты будут используя ваши учетные данные, я бы изменил код так, чтобы все вызовы API выполнялись с внутреннего сервера, а клиентская сторона отправляла на сервер необходимую информацию для выполнения вызова. Тогда для аутентификации я бы использовал служебную учетную запись, следующую за this .

Обратите внимание на рекомендации , описанные в конце документа.

...