Нет заголовка X-Endpoint-API-UserInfo, пересылаемого расширяемым прокси-сервером службы - PullRequest
0 голосов
/ 23 октября 2019

Я настраиваю домашний проект, используя конечные точки Google Cloud и функции Google Cloud, с аутентификацией по токену Google ID. Я следовал инструкциям this и this для настройки, однако заголовок X-Endpoint-API-UserInfo не передается в облачную функцию.

У меня есть одинКонечная точка POST настроена в this OpenAPI yaml. Он развернут на конечных точках облака, а также на расширяемом прокси-сервере. Когда я вызываю это из Почтальона с токеном, сгенерированным с gcloud auth application-default print-access-token, я обнаруживаю, что аутентификация работает, но в функции присутствуют только следующие заголовки: host, user-agent, transfer-encoding, accept, accept-encoding, authorization, cache-control, forwarded, function-execution-id, postman-token, x-appengine-city, x-appengine-citylatlong, x-appengine-country, x-appengine-default-version-hostname, x-appengine-https, x-appengine-region, x-appengine-request-log-id, x-appengine-user-ip, x-cloud-trace-context, x-forwarded-for, x-forwarded-proto, x-real-ip, connection

Можете ли вы помочь мне, почему яполучить информацию о пользователе из ESP в функции?

1 Ответ

1 голос
/ 29 октября 2019

Я только что проверил, что ESP отправляет заголовок X-Endpoint-Api-Userinfo в бэкэнд-функцию.

Вот мой код бэкэнда

cat hello.go 
// Package helloworld provides a set of Cloud Functions samples.
package helloworld

import (
        "encoding/json"
        "fmt"
        "html"
        "net/http"
)

// HelloHTTP is an HTTP Cloud Function with a request parameter.
func HelloHTTP(w http.ResponseWriter, r *http.Request) {
        for key, vals := range r.Header {
                for _, val := range vals {
                        resp := fmt.Sprintf("request-headers: %s=%s\n", key, val)
                        w.Write([]byte(resp))
                }
        }
        var d struct {
                Name string `json:"name"`
        }
        if err := json.NewDecoder(r.Body).Decode(&d); err != nil {
                fmt.Fprint(w, "Hello, World!")
                return
        }
        if d.Name == "" {
                fmt.Fprint(w, "Hello, World!")
                return
        }
        fmt.Fprintf(w, "Hello, %s!\n", html.EscapeString(d.Name))
}

Вот заголовки бэкэнда

request-headers: X-Appengine-Country=ZZ
request-headers: X-Appengine-Default-Version-Hostname=gef3fd9f75048d933-tp.appspot.com
request-headers: X-Appengine-Request-Log-Id=5db8910800ff043c9b1b0b1d300001737e67656633666439663735303438643933332d7470000161313837383661623961353931326664363534373361386233343137366433633a33000100
request-headers: X-Endpoint-Api-Userinfo=deducted
request-headers: X-Forwarded-Proto=https
request-headers: X-Real-Ip=100.117.29.55
request-headers: Connection=close
request-headers: User-Agent=curl/7.64.0
request-headers: Accept=*/*
request-headers: Authorization=Bearer deducted
request-headers: Forwarded=for="100.117.29.55";proto=https,for="107.178.206.195";proto=https
request-headers: X-Appengine-Https=on
request-headers: X-Appengine-User-Ip=107.178.206.195
request-headers: X-Endpoint-Api-Project-Id=402804073044
request-headers: X-Forwarded-For=100.117.29.55, 100.117.29.55,107.178.206.195
request-headers: Accept-Encoding=gzip
request-headers: Function-Execution-Id=fea3ox4erxsd
request-headers: X-Cloud-Trace-Context=db9bb39b72286dd6282f5319a18f72c8/9278156698602755161;o=1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...