Как интегрировать проверку firebase с помощью конечных точек движка Google

Я пишу сервер для мобильных приложений. Бэкэнд работает на движке Google и написан на Java.

Я хочу, чтобы пользователи могли входить в систему с федеративным идентификатором, например facebook.

Я видел, что Google поддерживает эту аутентификацию для мобильных приложений с помощью проверки подлинности firebase. Каким будет лучший способ интеграции проверки firebase с моими текущими конечными точками приложения?

Я уже использую хранилище данных облачной платформы и не хочу работать с базой данных firebase, используйте только метод проверки подлинности.

Спасибо.

Ответы

Ответ 1

Я также ищу ответ на этот вопрос. Мой лучший 5c пока

  • Используйте FireBase для настройки меток и т.д. с консоли.
  • Использовать пользовательский интерфейс FireBase (в бета-версии) для Интернета или "интеграция поставщика интегрированных идентификаторов" для iOS/Android для настройки потока аутентификации
  • Извлеките данные маркера/аутентификации на своем веб-сервере/iOS/Android-клиенте и передайте его своим конечным точкам в облаке, например, заголовки HTTP-заголовков.
  • Внесите javax.servlet.http.HttpServletRequest в свои методы конечных точек (просто добавьте аргумент и Google с целью автоматического ввода объекта запроса)
  • Создайте метод, который ваша конечная точка будет вызывать для каждого запроса (который нуждается в аутентификации), который будет обрабатывать проверку учетных данных, которые вы передали в качестве заголовков HTTP-запросов.
  • Используйте FireBase Java SDK для вызова FireBase для проверки учетных данных (для этого вам необходимо экспортировать json-конфигурацию из консоли Firebase) и загрузить SDK с ними, например, в один из ваших сервлетов:

@Override
    public void init(ServletConfig config) {
        try{
        InputStream in = config.getServletContext().getResourceAsStream("/WEB-INF/firebase-privatekey.json");
        FirebaseOptions options = new FirebaseOptions.Builder()
                .setServiceAccount(in)
                .setDatabaseUrl("YOUR_DATABASE_URL")
                .build();
        FirebaseApp.initializeApp(options);
        log.info("Authentication enabled");
        }
        catch(Throwable t) {
            t.printStackTrace();
            log.warning("AUTHENTICATION DISABLED. Only public resources will be available");
        }
    }

Ответ 2

Вы можете использовать Облачные конечные точки Google в качестве прокси-сервера для проверки подлинности перед вашим приложением. Конечные точки поддерживает проверку токенов аутентификации Firebase путем настройки шаблона OpenAPI:

# Configure Firebase as an AuthN provider
securityDefinitions:
    firebase:
      authorizationUrl: ""
      flow: "implicit"
      type: "oauth2"
      # Replace YOUR-PROJECT-ID with your project ID in the issuer and audiences fields
      x-google-issuer: "https://securetoken.google.com/YOUR-PROJECT-ID"
      x-google-audiences: "YOUR-PROJECT-ID"
      x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/metadata/x509/[email protected]"

# Add Firebase as an authN provider to specific endpoints...
security:
  - firebase: []

В качестве альтернативы вы можете использовать Firebase Admin SDK для написания промежуточного программного обеспечения для проверки подлинности, которое проверяет ваши токены:

FirebaseAuth.getInstance().verifyIdToken(idToken)
    .addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {
        @Override
        public void onSuccess(FirebaseToken decodedToken) {
            String uid = decodedToken.getUid();
            // ...
        }
});