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)
虽然类似于
我是 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)