首页 > 解决方案 > FastAPI:使用 Firebase 令牌的安全性

问题描述

我正在按照本教程创建一个 api 后端。

我使用 firebase 身份验证:

本教程展示了如何使用密码执行此操作:

# creating a dependency
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

async def get_current_user(token: str = Depends(oauth2_scheme)):
    user = fake_decode_token(token)
    return user

但是由于我使用的是firebase,因此无法/token使用密码获取令牌。

我可以通过创建自定义依赖项来解析令牌,例如:

async def parse_token(auth_token:str = Header(...)):
    token = auth_token.split(' ')[1]
    return token

async def get_current_user(token: str = Depends(parse_token)):
    # check the token with firebase auth
    user = auth.verify_id_token(token)
    return user

但现在我必须检查所有内容并手动返回异常。

有没有 FastAPI 方法来做到这一点?

标签: pythonfirebaseauthenticationfastapi

解决方案


简单地忽略它。

/token端点用于验证和生成令牌(成功尝试)。这只是一个登录页面/表单。您只需跳过该部分并使用将执行检查的依赖项。

当然,你要遵循同名和定位的OAuth2Password东东。

请记住,HTTP 是无状态的,令牌用于记住用户已经提供了标识。如果你有一个有效的令牌,你也可以在另一台机器上交换它并使用它(除非有一些安全 cookie 并且与机器相关的信息存储在 cookie 中)。

如果您继续学习链接的教程,您将获得具有身份验证的最终代码。"Authorization: Bearer {token}"只需在从前端到后端的请求中提供 firebase 令牌,它就会起作用。

在文档链接下方。

https://fastapi.tiangolo.com/tutorial/security/simple-oauth2/


推荐阅读