使用gcp oauth验证请求并在flask中发送cors头的一个小实用程序

gcloud-flask-oauth-cors的Python项目详细描述


一个小类,用于用python编写并托管在gcp上的http触发的云函数的身份验证和cors

请注意:这不是官方支持的谷歌产品。

如果您使用oauth对Cloud Function written in Python进行身份验证并托管在gcp上,并且您的客户机在浏览器中运行,则这是为您准备的。如果没有,你可能不会觉得这有用。

这门课做三件事:

  • 正确且可配置地响应浏览器用作CORS的飞行前检查的HTTP选项方法
  • 检索在Authorizationhttp报头中提供的oauth2令牌,对其进行验证,然后获取由该令牌编码的信息
  • 返回有效的令牌,或在找不到有效令牌时返回给用户的响应

安装

您可以使用pip:

python3 -m pip install --user gcloud-flask-oauth-cors

它托管在pypi上:https://pypi.org/project/gcloud-flask-oauth-cors/

使用

如果没有,请使用云函数create an OAuth client IDpass it as an environment variable然后,您可以使用以下命令:

import gcloud_flask_oauth_cors as oauth

def my_function_name(request):
    auth = oauth.Auth(os.getenv("OAUTH_CLIENT_ID"))
    id_info = auth.get_id_info(request)
    if id_info is None:
        # If we were called with the HTTP OPTIONS method, this will return the relevant CORS headers.
        # If another HTTP method was used and we can't authenticate, this will return a 401 (Unauthorized)
        return auth.get_response()

    # Do something with the id_info, for example:
    print(id_info["sub"])

在客户端,可以使用Google Sign-in。确保在任何此类请求中都传递id_token

let xhr = new XMLHttpRequest();
xhr.setRequestHeader("Authorization", "Bearer " + id_token);

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用JPT测试jira性能时,java无法识别jiraaddress   java com。fasterxml。杰克逊。数据绑定。JsonMappingException:数值(1557587751202)超出int的范围   war中打包后资源中文件的java FileNotFoundException   java调整JPanel中的JTable大小   java将的ArrayList字符串转换为字符?   web项目中的java我们可以在不了解UI的情况下编写核心服务层吗?   java Android Studio如何从Firebase数据库获取名称的用户日志?   java构建同步映射,在单个键上阻塞   springboot中基于实体camelcase变量nam的java命名存储库方法   java数组行中数字的移动   java NumberFormat执行选项   使用JAVA编码EDIFACT映射   java Selenium 3.0.1,新的FirefoxDriver+木偶卡在起始页上   使用导入java*怎么样用于使用包“java”下的所有子包?   在Groovy(或Java)中如何将字符串数组的所有索引包含到一行中   swing为什么我的图像不显示?(JavaGUI)