Аутентификация с использованием учетной записи службы Google в приложении Flask и развертывание в Google App Engine

Ниже приведены мои требования.

  • Разработайте приложение для фляги.
  • Используйте коллекции в firebase в приложении.
  • Разверните это приложение в Google App Engine, используя стандартный сервисный аккаунт.

Что я наделал.

  • Создал сервисный аккаунт
  • Загрузили соответствующие учетные данные json; Я называю это key.json
  • написал main.py
cred = credentials.Certificate('key.json') 
default_app = initialize_app(cred) 
db = firestore.client()

user_ref = db.collection_group('Users')

@app.route('/', methods=['GET']) 
def home():
return "<h1>Welcome to my first app</h1>"

@app.route('/users', methods=['GET'])
def getUsers():
    try:
        result = [user.to_dict() for user in user_ref .stream()]
        return jsonify(result), 200
    except Exception as e:
        result = { "message:"failed"}
        return jsonify(result), 500

Я протестировал это локально, а также развернул в Google App Engine.

В обоих случаях key.json находился в том же каталоге, что и код. Я подтвердил, что если этот key.json изменен для хранения неправильных данных, то конечная точка / users не будет работать и выдает ошибку 500.

Все идет нормально. Я хочу знать, правильный ли это подход.

  • Я хочу, чтобы аутентификация key.json применялась даже для корневой / конечной точки. то есть, если пользователь предоставляет действительный key.json, только тогда должен отображаться Welcome to my first app. В противном случае необходимо отобразить сообщение Unauthorized user.
key.json - это не то, что обычно используется для аутентификации конечных пользователей. Думаю, вам нужно пересмотреть схему аутентификации.
gaefan 31.03.2021 15:44

Из вашего вопроса неясно, что вы хотите делать. Похоже, что «key.json» сохранен в исходном коде вашего приложения. Вы ожидаете, что пользователь предоставит json-контент? Как упоминалось в @gaefan, вы обычно не используете key.json для аутентификации пользователей.

dishant makwana 01.04.2021 14:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
46
1

Ответы 1

Как упоминалось @Gaefan и @DishantMakwana, а также в этом документация:

An API key only identifies the application and doesn't require user authentication. It is sufficient for accessing public data.

Итак, чтобы аутентифицировать / авторизовать своих пользователей, вам следует пересмотреть свою стратегию. Я бы порекомендовал вам следовать инструкциям в Аутентификация в качестве конечного пользователя Документация.

Поскольку это очень простая аутентификация, они необходимы, мой менеджер согласился на использование ключа API.

Sara 02.04.2021 01:01

Кроме того, мы используем секретный менеджер для хранения этих ключей api.

Sara 02.04.2021 01:02

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

Sara 02.04.2021 01:03

хорошо, пока вы знаете ограничения и риски, вы можете следовать по этому пути, важно отметить, что предоставлять каждому пользователю вашего приложения key.json довольно непрактично, в зависимости от количества пользователей и структуры приложения.

Rafael Lemos 02.04.2021 12:19

Кроме того, я нашел эту ссылку. youtube.com/watch?v=4HAbnin3nto Это тоже может быть полезно. Я смотрю на это сейчас.

Sara 02.04.2021 12:45

Другие вопросы по теме