我试图通过使用go lang在KrakneD中添加自定义逻辑来构建http插件。但目前,我正在从KrakenD获得500个内部服务器错误,在后端获得401个未经授权的错误。当我调试更多时,我可以看到承载令牌没有被传递到后端。
KrakenD后端Config:
"backend": [
{
"url_pattern": "My downstream Path",
"method": "Http Method",
"host": [
"My Host"
],
"extra_config": {
"github.com/devopsfaith/krakend/transport/http/client/executor": {
"name": "Plugin Register Name"
},
"github.com/devopsfaith/krakend-oauth2-clientcredentials": {
"endpoint_params": {},
"token_url": "My Token URL",
"client_id": "My Client ID",
"client_secret": "My Client Secret"
}
},
"disable_host_sanitize": false
}
]Go Lang插件
func (r registerer) registerClients(ctx context.Context, extra map[string]interface{}) (http.Handler, error) {
name, ok := extra["name"].(string)
if !ok {
return nil, errors.New("wrong config")
}
if name != string(r) {
return nil, fmt.Errorf("unknown register %s", name)
}
// return the actual handler wrapping or your custom logic so it can be used as a replacement for the default http client
return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
fmt.Println(req.Header.Get("Authorization")) // Bearer token is coming empty. I am expecting bearer token value here, which was configured in KrakenD
client := &http.Client{
Timeout: time.Second * 10,
}
resp, err := client.Do(req)
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
w.Write(body)
}), nil
}发布于 2022-11-10 07:56:49
后端没有看到Bearer,因为krakend默认不会转发这个标头。必须将input_headers字段设置为krakend。检查链接:https://www.krakend.io/docs/endpoints/parameter-forwarding/#headers-forwarding
您的配置必须是:
"input_headers": [
"Authorization"
],
"backend": [
{
"url_pattern": "My downstream Path",
"method": "Http Method",
"host": [
"My Host"
],
"extra_config": {
"github.com/devopsfaith/krakend/transport/http/client/executor": {
"name": "Plugin Register Name"
},
"github.com/devopsfaith/krakend-oauth2-clientcredentials": {
"endpoint_params": {},
"token_url": "My Token URL",
"client_id": "My Client ID",
"client_secret": "My Client Secret"
}
},
"disable_host_sanitize": false
}
]https://stackoverflow.com/questions/71031675
复制相似问题