Azure: Use SSO settings in plugin context (#112058)

* Bump grafana-azure-sdk-go

* Set override values

* Add Azure settings helper covering SSO cases

* Ensure Azure settings are correctly created

- Add mock for sso settings service
- Add tests
- Update wire

* Minor improvements

* Test updates

* Move fake implementation

* add interface to limit leakage

* rename

* work sync

* Fix wire

* Add fake provider

* Update tests

* Actually fix the workspace

* More go dependency fixes

* Update tests

* Update workspace, again

* Add missing tests

* Fix dependencies

* These dependencies..

* More dependency things

* Okay now dependencies really are fixed

* Lint

* Update pkg/services/pluginsintegration/pluginconfig/request.go

Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>

---------

Co-authored-by: Will Browne <wbrowne@tcd.ie>
Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
This commit is contained in:
Andreas Christou
2025-10-10 11:46:26 +01:00
committed by GitHub
co-authored by Misi Will Browne
parent 59459560c2
commit fa9d6be255
15 changed files with 652 additions and 75 deletions
@@ -9,11 +9,14 @@ import (
"github.com/grafana/grafana-aws-sdk/pkg/awsds"
"github.com/grafana/grafana-azure-sdk-go/v2/azsettings"
"github.com/grafana/grafana/pkg/plugins/auth"
"github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/backend/proxy"
"github.com/grafana/grafana-plugin-sdk-go/experimental/featuretoggles"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/login/social"
"github.com/grafana/grafana/pkg/plugins/auth"
"github.com/grafana/grafana/pkg/services/pluginsintegration/pluginsso"
)
var _ PluginRequestConfigProvider = (*RequestConfigProvider)(nil)
@@ -23,12 +26,16 @@ type PluginRequestConfigProvider interface {
}
type RequestConfigProvider struct {
cfg *PluginInstanceCfg
cfg *PluginInstanceCfg
ssoSettings pluginsso.SettingsProvider
logger log.Logger
}
func NewRequestConfigProvider(cfg *PluginInstanceCfg) *RequestConfigProvider {
func NewRequestConfigProvider(cfg *PluginInstanceCfg, ssoSettings pluginsso.SettingsProvider) *RequestConfigProvider {
return &RequestConfigProvider{
cfg: cfg,
cfg: cfg,
ssoSettings: ssoSettings,
logger: log.New("pluginrequestconfig"),
}
}
@@ -89,8 +96,19 @@ func (s *RequestConfigProvider) PluginRequestConfig(ctx context.Context, pluginI
if s.cfg.AzureAuthEnabled {
m[azsettings.AzureAuthEnabled] = strconv.FormatBool(s.cfg.AzureAuthEnabled)
}
azureSettings := s.cfg.Azure
if azureSettings != nil && slices.Contains[[]string, string](azureSettings.ForwardSettingsPlugins, pluginID) {
if azureSettings == nil {
azureSettings = &azsettings.AzureSettings{}
}
if slices.Contains(azureSettings.ForwardSettingsPlugins, pluginID) {
azureAdSettings, err := s.ssoSettings.GetForProvider(ctx, social.AzureADProviderName)
if err != nil {
s.logger.Error("Failed to get SSO settings", "error", err)
}
azureSettings = mergeAzureSettings(azureSettings, azureAdSettings)
if azureSettings.Cloud != "" {
m[azsettings.AzureCloud] = azureSettings.Cloud
}