GCP 端点:调用方在查询中请求 API 密钥后没有权限

Al *_*Wld 1 permissions api-key google-cloud-endpoints google-cloud-platform

尝试将 Google Cloud 平台与部署了 GKE 的后端一起使用。

我有一个用于端点的 swagger 文件,在不使用安全性时可以正常工作。

我在 swagger 文件中添加了 api 密钥定义:

paths:
  /create:
    post:
      ...
      security:
        - api_key: []
      
securityDefinitions:
  api_key:
    type: "apiKey"
    name: "key"
    in: "query"
Run Code Online (Sandbox Code Playgroud)

现在如果我尝试发帖,我会得到预期的结果

{
    "code": 16,
    "message": "Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.",
    "details": [
        {
            "@type": "type.googleapis.com/google.rpc.DebugInfo",
            "stackEntries": [],
            "detail": "service_control"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

好的,现在我在 GCP 的凭据部分创建了一个 API 密钥 在此处输入图片说明

我更新帖子请求以包含?key=API_KEY并收到以下错误:

{
    "code": 13,
    "message": "\b#The caller does not have permission",
    "details": [
        {
            "@type": "type.googleapis.com/google.rpc.DebugInfo",
            "stackEntries": [],
            "detail": "service_control"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我找不到有关此错误的任何信息,是否意味着我的 API 密钥不适合此端点?如果是这样,我该如何解决这个问题?

Jua*_*cki 6

确认您已启用所需的服务

gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
gcloud services enable endpoints.googleapis.com
Run Code Online (Sandbox Code Playgroud)

同时启用您的端点服务 gcloud services enable ENDPOINTS_SERVICE_NAME

  • 谢谢,我缺少“gcloud services enable servicecontrol.googleapis.com” (2认同)