Plugins: AuthType in route configuration and params interpolation (#33674)

* AuthType in route configuration

* Pass interpolated auth parameters to token provider

* Unit tests

* Update after review

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>

Fixes #33669
Closed #33732
This commit is contained in:
Sergey Kostrukov
2021-05-06 22:05:23 +02:00
committed by GitHub
parent bfd5d3b16a
commit 1790737cf1
7 changed files with 185 additions and 73 deletions
+7 -14
View File
@@ -29,7 +29,7 @@ type genericAccessTokenProvider struct {
datasourceId int64
datasourceVersion int
route *plugins.AppPluginRoute
data templateData
authParams *plugins.JwtTokenAuth
}
type jwtToken struct {
@@ -69,12 +69,12 @@ func (token *jwtToken) UnmarshalJSON(b []byte) error {
}
func newGenericAccessTokenProvider(ds *models.DataSource, pluginRoute *plugins.AppPluginRoute,
data templateData) *genericAccessTokenProvider {
authParams *plugins.JwtTokenAuth) *genericAccessTokenProvider {
return &genericAccessTokenProvider{
datasourceId: ds.Id,
datasourceVersion: ds.Version,
route: pluginRoute,
data: data,
authParams: authParams,
}
}
@@ -88,21 +88,14 @@ func (provider *genericAccessTokenProvider) getAccessToken() (string, error) {
}
}
urlInterpolated, err := interpolateString(provider.route.TokenAuth.Url, provider.data)
if err != nil {
return "", err
}
tokenUrl := provider.authParams.Url
params := make(url.Values)
for key, value := range provider.route.TokenAuth.Params {
interpolatedParam, err := interpolateString(value, provider.data)
if err != nil {
return "", err
}
params.Add(key, interpolatedParam)
for key, value := range provider.authParams.Params {
params.Add(key, value)
}
getTokenReq, err := http.NewRequest("POST", urlInterpolated, bytes.NewBufferString(params.Encode()))
getTokenReq, err := http.NewRequest("POST", tokenUrl, bytes.NewBufferString(params.Encode()))
if err != nil {
return "", err
}