Google Cloud Functions 中的 Identity Platform 身份验证

Google Identity Platform authentication inside Cloud Functions

虽然类似于, my question is more specific towards Google Identity Platform (https://cloud.google.com/identity-platform).

我是 GCP 的新手。我在 Identity Platform 中创建了一个 username/password 提供商。我创建了一个示例 Flask 应用程序客户端并使用 FireBaseUI 执行基本用户登录。我可以在客户端获取accessToken。

然后我创建了一个 Cloud Function(select 根据上述线程未经身份验证)。然后在“Authorization: Bearer”header中传递了accessToken。我能够访问 Cloud Function 中的令牌。

但我无法弄清楚的下一部分是如何针对 Identity Platform 验证该令牌并获取用户详细信息?

要验证令牌,您需要检索传入的“授权”HTTP header 的值。这将是一个以“Bearer”开头的字符串。其余部分是可以传递给 verifyIdToken() 的 JWT 令牌,您将返回一个经过验证的解码令牌。从该数据中,您将能够使用其中的属性(例如“电子邮件”)。

参见:

Verify ID tokens using the Firebase Admin SDK


from flask import abort
import firebase_admin
from firebase_admin import auth

default_app = firebase_admin.initialize_app()

def test_firebase_auth(request):
    authorization = request.headers.get('Authorization')
    id_token = None
    if authorization and authorization.startswith('Bearer '):
        id_token = authorization.split('Bearer ')[1]
    else:
        abort(401)

    try:
        decoded_token = auth.verify_id_token(id_token)
        return str(decoded_token)
        uid = decoded_token['uid']
        # log.info(decoded_token)
        return uid
    except Exception as e: # ValueError or auth.AuthError
        return str(e)
        abort(401)