-1

Short Version: I have configured a backend bucket on my load balancer and mapped it to /__/auth/, that bucket contains a publicly acessable file named handler, but when I hit /__/auth/handler I get an error XML with The specified key does not exist.

UPDATE: I think this issue is probably caused by this other issue: GCP load balancer url re-writing and backend-mapping not happening the way I'd expect

Long Version

In GCP I am trying to publicly host some files on my domain using a backend bucket as one of the backends for my classic application load balancer. Specifically, I'm trying to host some of Firebase's auth files on my domain so that I can use them for a same-origin oauth redirect per Google's recommended option 4 here. (Google's sample server implementation just statically serves these, so I figure I can get away with letting a storage bucket do that for me for now.)

Bucket Backend: I have configured a bucket backend, with this "equivalent code"

PUT https://compute.googleapis.com/compute/v1/projects/<My Project>/global/backendBuckets/<My Backend Bucket Name>
{
  "bucketName": "<My Bucket Name>",
  "cdnPolicy": {
    "cacheMode": "CACHE_ALL_STATIC",
    "clientTtl": 3600,
    "defaultTtl": 3600,
    "maxTtl": 86400,
    "negativeCaching": false,
    "requestCoalescing": true,
    "serveWhileStale": 0
  },
  "compressionMode": "DISABLED",
  "description": "Per option 3 here: \nhttps://cloud.google.com/identity-platform/docs/web/redirect-best-practices",
  "enableCdn": true,
  "name": "<My Backend Bucket Name>",
  "usedBy": [
    {
      "reference": "https://www.googleapis.com/compute/beta/projects/<My Project>/global/urlMaps/<My URL MAP>"
    }
  ]
}

Url Map: I have configured a mapping to the bucket backend on my load balancer:

pathMatchers:
- defaultService: https://www.googleapis.com/compute/v1/projects/<My Project>/global/backendServices/<My Main Backend>
  name: path-matcher-1
  pathRules:
  - paths:
    - /__/auth/*
    service: https://www.googleapis.com/compute/v1/projects/<My Project>/global/backendBuckets/<My Bucket Backend Name>

Permissions: I have also granted the principal allUsers the Storage Object Viewer role on the bucket, and the cloud console UI shows the "Public to internet" warnings.

My bucket has Permissions/Access control set to Uniform, so allUsers should be granted that role on the objects in the bucket as well.

Objects: One of the objects in the bucket is named handler. It has type application/octet-stream and under "Public Access" also shows the "Public to internet" warning. It's gs link is gs://<Bucket Name>/handler

Problem: The problem is that when I try any of these urls __/auth/handler, __/auth/<Bucket Name>/handler, and a few other variations, I get back the same error XML:

<Error>
     <Code>NoSuchKey</Code>
     <Message>The specified key does not exist.</Message>
</Error>

Clearly my Bucket Backend is being hit, since this is a cloud storage error and I can see in my load balancer's monitoring page that traffic is being routed to the backend bucket.

Questions

  • Why can't the bucket backend find the files in my bucket? (Highest Priority)
  • Is there anything wrong with my approach to handling oauth redirects here? (Nice to have)
3
  • look at your storage logs to see what's happening. You may have to enable detailed logging. Commented yesterday
  • @RonnieSmith can you link me to something that describes how to enable detailed logging? I've turned on audit logs, but am not seeing anything, and then have also turned on usage and storage logs, and it looks like that's going to take a bit of time to roll up. So I just want to make sure I understand what you mean since there's so many different kinds of logs.
    – David
    Commented yesterday
  • This should get you started. I believe I misspoke re "detailed" logs. Just enable logging cloud.google.com/logging/docs/audit#data-access Commented 13 hours ago

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.