Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flask 如何在Google Cloud函数的python环境中检查HTTP basic auth_Flask_Google Cloud Platform_Google Cloud Build - Fatal编程技术网

Flask 如何在Google Cloud函数的python环境中检查HTTP basic auth

Flask 如何在Google Cloud函数的python环境中检查HTTP basic auth,flask,google-cloud-platform,google-cloud-build,Flask,Google Cloud Platform,Google Cloud Build,如何实现这一点 我不确定是否可以像使用python装饰器那样使用各种与flask相关的库,而且我没有访问flask路由的权限 我的解决方案是手动获取标题,并手动解析授权字符串。但实际上我不确定授权遵循的是什么格式-是否有一些库可以为我处理这个复杂问题?requirements.txt: basicauth==0.4.1 以及守则: from basicauth import decode encoded_str = request.headers.get('Authorization')

如何实现这一点

我不确定是否可以像使用python装饰器那样使用各种与flask相关的库,而且我没有访问flask路由的权限

我的解决方案是手动获取标题,并手动解析授权字符串。但实际上我不确定授权遵循的是什么格式-是否有一些库可以为我处理这个复杂问题?

requirements.txt:

basicauth==0.4.1
以及守则:

from basicauth import decode


encoded_str = request.headers.get('Authorization')
username, password = decode(encoded_str)

if (username == "example", password == "*********"):
    authed_request = True
requirements.txt:

basicauth==0.4.1
以及守则:

from basicauth import decode


encoded_str = request.headers.get('Authorization')
username, password = decode(encoded_str)

if (username == "example", password == "*********"):
    authed_request = True
云功能(CFs)主要用于执行简单、独立的任务,而不是复杂的应用程序

推荐的CF访问控制方法基于和。发件人:

在运行时,云函数使用服务帐户
项目_ID@appspot.gserviceaccount.com
,它具有编辑器 项目中的角色。您可以更改此服务帐户的角色 限制或扩展运行功能的权限

此访问控制方法在实际CF执行之外强制实施,因此您不必担心CF代码中的身份验证—您已经知道它只能使用相应的服务帐户凭据执行

是的,可以使用类似于在更复杂的应用程序中使用的自定义身份验证方案,但这不会是微不足道的——这不是CFs的设计目的。请参阅相关的

云功能(CFs)主要用于执行简单、独立的任务,而不是复杂的应用程序

推荐的CF访问控制方法基于和。发件人:

在运行时,云函数使用服务帐户
项目_ID@appspot.gserviceaccount.com
,它具有编辑器 项目中的角色。您可以更改此服务帐户的角色 限制或扩展运行功能的权限

此访问控制方法在实际CF执行之外强制实施,因此您不必担心CF代码中的身份验证—您已经知道它只能使用相应的服务帐户凭据执行


是的,可以使用类似于在更复杂的应用程序中使用的自定义身份验证方案,但这不会是微不足道的——这不是CFs的设计目的。请参阅相关的

URL是公开的-不确定服务帐户如何以这种方式提供任何身份验证。啊,你的意思是在入口端。我想象IAM检查
cloudfunctions.functions.call的权限是在CF触发器级别完成的。因此,如果触发器是HTTP,是的,URL是公共的,但它位于Google拥有的
cloudfunctions.net
域中,因此在收到HTTP请求后但在实际调用CF之前,很容易进行IAM检查。因此,您不需要在CF代码本身内部执行任何操作,您只需要注意配置CF和IAM角色和权限。我仍然不明白为什么这与HTTP的“基本访问身份验证”有关?我想我想说的是,我认为尝试解析/使用CF代码中的基本身份验证信息毫无意义。由于特定的CF总是在Google策划的环境中执行,因此信息要么丢失,要么是静态的,由相同的身份/用户发送。它作为HTTP头在HTTP请求中发送-这样我可以检查它是否匹配用户名和密码。URL是公开的-不确定服务帐户如何以这种方式提供任何身份验证。啊,你的意思是在入口端。我想象IAM检查
cloudfunctions.functions.call的权限是在CF触发器级别完成的。因此,如果触发器是HTTP,是的,URL是公共的,但它位于Google拥有的
cloudfunctions.net
域中,因此在收到HTTP请求后但在实际调用CF之前,很容易进行IAM检查。因此,您不需要在CF代码本身内部执行任何操作,您只需要注意配置CF和IAM角色和权限。我仍然不明白为什么这与HTTP的“基本访问身份验证”有关?我想我想说的是,我认为尝试解析/使用CF代码中的基本身份验证信息毫无意义。信息要么丢失,要么是静态的,因为特定的CF总是由同一身份/用户在谷歌管理的环境中执行。它作为HTTP头发送到HTTP请求中,因此我可以检查它是否与用户名和密码匹配。