gpt4 book ai didi

google-app-engine - 使用服务帐户授权对 App Engine 应用程序的请求

转载 作者:太空宇宙 更新时间:2023-11-03 15:30:31 25 4
gpt4 key购买 nike

我在 handlers 中使用 app.yamllogin:admin 将对我的应用程序的访问限制为仅选定的 Google 帐户(我可以在 IAM 中编辑)。我在 GAE 上使用 python27 标准环境。

我想使用我的应用程序从另一个服务器应用程序(未托管在 GAE 上)公开的 JSON API。使用服务帐户看起来是一个简单的解决方案,但我无法正确获取范围或请求本身,因此端点会看到经过身份验证的 Google 用户。

service-user 当前在 IAM 中具有 Project/Viewer 角色。我尝试了更多,例如 AppEngine/ViewerAppEngine/Admin。我还尝试了更多范围。

我的测试代码:

"""Try do do an API request to a deployed app
with the current service account.

https://google-auth.readthedocs.io/en/latest/user-guide.html
"""
import sys

from google.auth.transport.requests import AuthorizedSession
from google.oauth2 import service_account

def main():
if len(sys.argv) < 2:
sys.exit("use: %s url" % sys.argv[0])

credentials = service_account.Credentials.from_service_account_file(
'service-user.json')
scoped_credentials = credentials.with_scopes(
['https://www.googleapis.com/auth/cloud-platform.read-only'])
authed_http = AuthorizedSession(scoped_credentials)

response = authed_http.request('GET', sys.argv[1])

print response.status_code, response.reason
print response.text.encode('utf-8')

if __name__ == '__main__':
main()

没有错误,请求的行为就像未经身份验证一样。我检查了服务器上的 header ,从浏览器请求时有几个 session cookie,AuthorizedSession 请求包含单个 Authorization: Bearer .. 标题。

最佳答案

通常您需要的角色是 App Engine Admin ;它是为此目的而设计的。它也应该与 viewer/editor/owner primitive roles 一起使用.话虽如此,为确保这不是“角色”问题,只需为其赋予项目所有者角色以及明确的 App Engine 管理员角色,然后重试。这将消除任何基于角色的问题。

让我知道这是否适合您。

关于google-app-engine - 使用服务帐户授权对 App Engine 应用程序的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52081180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com