Как я могу разрешить моему приложению Unity доступ к базе данных Firebase в реальном времени без учетных записей пользователей и без общего доступа? - PullRequest
0 голосов
/ 08 января 2019

Я использую Firebase Unity SDK (5.4.3). Мне нужно приложение для доступа к базе данных в реальном времени. Все работает нормально, когда у меня есть доступ, настроенный для общего доступа, но мне нужно защитить базу данных, чтобы ее можно было читать / изменять только через приложение.

Я следовал инструкциям здесь: https://firebase.google.com/docs/database/unity/start за разрешение редактору «настроить SDK для использования учетной записи службы для запуска в редакторе Unity». Это позволяет редактору Unity получать доступ к базе данных, но это не работает на устройстве. Есть инструкции для аутентификации пользователей, но я не хочу входить в приложение.

Короче говоря, как я могу разрешить доступ через приложение, но запретить доступ за пределами приложения. Могу ли я использовать служебную учетную запись на устройстве и как это настроить?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Как сказал Даг Стивенсон , это невозможно; у вас либо публичный логин, либо ограниченный логин с аутентификацией.

Однако у меня просто будет один выделенный пользователь, например myUnityAppUser, с паролем, например, например. 123456 где-то определено в скрипте или, может быть, где-то дополнительный файл шифрования.

Затем выполните вход автоматически без участия пользователя -> отправить имя пользователя + пароль. Пароль все еще может быть зашифрован и т. Д., Но все это может быть обработано самим приложением без активного входа в систему Everytime

Чем вы делаете обычный вход в систему, например, например. ( Источник )

public void Login(string email, string password)
{
    auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task =>
    {
        if (task.IsCanceled)
        {
            Debug.LogError("SignInWithEmailAndPasswordAsync canceled.");
            return;
        }
        if (task.IsFaulted)
        {
            Debug.LogError("SignInWithEmailAndPasswordAsync error: " + task.Exception);
            if (task.Exception.InnerExceptions.Count > 0)
                UpdateErrorMessage(task.Exception.InnerExceptions[0].Message);
            return;
        }

        FirebaseUser user = task.Result;
        Debug.LogFormat("User signed in successfully: {0} ({1})",
            user.DisplayName, user.UserId);

        SceneManager.LoadScene("LoginResults");
    });
}

Теперь где-то в вашем приложении вы просто звоните

Login ("myUnityAppUset@some.email", "123456");

с какими-то где-то "жестко закодированными" (может быть, зашифрованными?) Учетными данными.


Обратите внимание, что все еще возможно, что кто-то декомпилирует приложение и сможет снова обмануть.

0 голосов
/ 08 января 2019

Это невозможно. Если вы хотите ограничить, кто или что может получить доступ к вашей базе данных в реальном времени (и облачному хранилищу, и Firestore), вам нужно будет использовать проверку подлинности Firebase и написать правила безопасности, которые блокируют доступ только пользователям, которые вошли в ваше приложение / игру.

Без использования Firebase Authentication единственный доступ к вашей базе данных будет, по сути, общедоступным - для всех, кто знает название вашего проекта. Любой может узнать название вашего проекта, просто перепроектировав ваше приложение / игру и извлекая из него информацию о конфигурации. Эта информация о конфигурации не является частной - это также общедоступная информация.

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