Невероятный Java-клиент для аутентификации Firebase с действительным токеном Firebase - PullRequest
0 голосов
/ 27 декабря 2018

Я создаю небольшой Java-клиент с угловым интерфейсом для распространения среди клиентов.

На данный момент у меня есть экран входа в систему через Angular, который возвращает действующий токен Firebase.Я не уверен, как я могу использовать этот токен для аутентификации пользователя в Java-части приложения, чтобы клиент Java мог выполнять такие действия, как загрузка файлов.

С помощью Admin SDK я могу сделать что-то вроде:

public FirebaseAuth firebaseAuth() throws IOException {
    FileInputStream serviceAccount = new FileInputStream(new ClassPathResource(SERVICE_ACCOUNT_KEY).getFile());

    FirebaseOptions options = new FirebaseOptions.Builder()
            .setCredentials(GoogleCredentials.fromStream(serviceAccount))
            .setDatabaseUrl(String.format("https://%s.firebaseio.com/", DATABASE_NAME))
            .build();

    FirebaseApp.initializeApp(options);

    return FirebaseAuth.getInstance();
}

Затем я могу перейти к стандартному потоку проверки токена по Firebase и получения сведений о пользователе.

Поскольку я распространяю и внешний интерфейс Angular, и клиент Java для конечных пользователей, я не могу использовать Admin SDK.

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

1 Ответ

0 голосов
/ 27 декабря 2018

Firebase Admin SDK не имеет возможности предоставить доступ одному аутентифицированному пользователю.Он предназначен для использования в серверных системах, которые вы полностью контролируете.Инициализированный с учетной записью службы, он будет иметь разрешение на все, что может сделать учетная запись службы.Он не предназначен для распространения среди конечных пользователей или любых лиц, которым вы не доверяете, с полным доступом к вашему проекту Firebase.

Когда речь идет о фактической аутентификации конечного пользователя, Firebase Authentication предназначена только для использованияв клиентских приложениях (Android, iOS, Интернет и производные среды).

...