如何使用 Nodejs 中的令牌对 Cloud Storage 中的私有存储桶进行身份验证
How to authenticate with tokens in Nodejs to a private bucket in Cloud Storage
通常在 Python 我所做的事情中,我获取应用程序默认凭据,获取访问令牌,然后刷新它以便能够对私有环境进行身份验证。
Python中的代码:
# getting the credentials and project details for gcp project
credentials, your_project_id = google.auth.default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
#getting request object
auth_req = google.auth.transport.requests.Request();
print(f"Checking Authentication : {credentials.valid}")
print('Refreshing token ....')
credentials.refresh(auth_req)
#check for valid credentials
print(f"Checking Authentication : {credentials.valid}")
access_token = credentials.token
credentials = google.oauth2.credentials.Credentials(access_token);
storage_client = storage.Client(project='itg-ri-consumerloop-gbl-ww-dv',credentials=credentials)
我是 NodeJS 的新手,我正在尝试做同样的事情。
我稍后的目标是创建一个应用程序引擎应用程序,该应用程序将公开在私有存储桶中找到的图像,因此凭据是必须的。
怎么做到的?
对于身份验证,您可以依赖 GCP 平台(GAE、Cloud Functions、VM 等)中存在的默认应用程序凭据。然后你可以 运行 来自 documentation 的以下代码片段:
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucket = storage.bucket('albums');
const file = bucket.file('my-existing-file.png');
在大多数情况下,不需要显式使用身份验证包,因为它们已经在 Nodejs 的 google-cloud/storage
包下执行。 Python 中的 google-cloud-storage
包也是如此。在 Github 上查看这两个包的源代码可能会有所帮助。对我来说,这确实有助于理解身份验证机制。
当我在自己的笔记本电脑上开发与 google 云存储交互的代码时,我首先告诉 gcloud SDK 我的凭据是什么以及我在哪个 GCP 项目上工作。我为此使用以下命令:
gcloud config set project [PROJECT_ID]
gcloud auth application-default login
您还可以将 DEFAULT_APPLICATION_CREDENTIALS
设置为指向凭据文件的环境变量。然后在您的代码中,您可以在初始化客户端时传递项目名称。例如,如果您 运行 在 GCP 之外将您的代码安装在另一台服务器上,这可能会有所帮助。
通常在 Python 我所做的事情中,我获取应用程序默认凭据,获取访问令牌,然后刷新它以便能够对私有环境进行身份验证。
Python中的代码:
# getting the credentials and project details for gcp project
credentials, your_project_id = google.auth.default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
#getting request object
auth_req = google.auth.transport.requests.Request();
print(f"Checking Authentication : {credentials.valid}")
print('Refreshing token ....')
credentials.refresh(auth_req)
#check for valid credentials
print(f"Checking Authentication : {credentials.valid}")
access_token = credentials.token
credentials = google.oauth2.credentials.Credentials(access_token);
storage_client = storage.Client(project='itg-ri-consumerloop-gbl-ww-dv',credentials=credentials)
我是 NodeJS 的新手,我正在尝试做同样的事情。
我稍后的目标是创建一个应用程序引擎应用程序,该应用程序将公开在私有存储桶中找到的图像,因此凭据是必须的。
怎么做到的?
对于身份验证,您可以依赖 GCP 平台(GAE、Cloud Functions、VM 等)中存在的默认应用程序凭据。然后你可以 运行 来自 documentation 的以下代码片段:
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucket = storage.bucket('albums');
const file = bucket.file('my-existing-file.png');
在大多数情况下,不需要显式使用身份验证包,因为它们已经在 Nodejs 的 google-cloud/storage
包下执行。 Python 中的 google-cloud-storage
包也是如此。在 Github 上查看这两个包的源代码可能会有所帮助。对我来说,这确实有助于理解身份验证机制。
当我在自己的笔记本电脑上开发与 google 云存储交互的代码时,我首先告诉 gcloud SDK 我的凭据是什么以及我在哪个 GCP 项目上工作。我为此使用以下命令:
gcloud config set project [PROJECT_ID]
gcloud auth application-default login
您还可以将 DEFAULT_APPLICATION_CREDENTIALS
设置为指向凭据文件的环境变量。然后在您的代码中,您可以在初始化客户端时传递项目名称。例如,如果您 运行 在 GCP 之外将您的代码安装在另一台服务器上,这可能会有所帮助。