虽然类似于Google Cloud Functions http身份验证,但我的问题更具体地针对Google Identity Platform(https://cloud.google.com/identity-platform(。
我是基仕伯的新手。我在身份平台中创建了一个用户名/密码提供程序。我创建了一个示例烧瓶应用程序客户端,并使用FireBaseUI执行基本用户登录。我能够在客户端中获取访问令牌。
然后我创建了一个云函数(根据上述线程选择未经身份验证(。然后在"授权:持有者"标头中传递访问令牌。我能够访问云函数中的令牌。
但是我无法弄清楚的下一部分是如何根据身份平台验证该令牌并获取用户详细信息?
要验证令牌,您需要检索在"授权"HTTP 标头中传递的值。 这将是一个以"持有者"开头的字符串。 其余部分是可以传递给验证 IdToken(( 的 JWT 令牌,你将返回一个经过验证的解码令牌。 从这些数据中,您将能够使用其中的属性(例如"电子邮件"(。
看:
使用 Firebase 管理员 SDK 验证 ID 令牌
<小时 />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)