Files
grafana/pkg/services/pluginsintegration/pluginconfig/azure_settings.go
Andreas Christou fa9d6be255 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>
2025-10-10 11:46:26 +01:00

67 lines
2.4 KiB
Go

package pluginconfig
import (
"github.com/grafana/grafana-azure-sdk-go/v2/azsettings"
"github.com/grafana/grafana/pkg/services/pluginsintegration/pluginsso"
)
// mergeAzureSettings merges the Azure AD settings from the SSO settings DB with the Azure AD settings from the config.
// Azure AD settings can be changed via the UI or SSO settings API
// They can also be overridden in the [azure] config section
// The order of precedence is:
// 1. [azure] config section (if the override flag is set)
// 2. SSO settings from the DB (if they exist)
// 3. [auth.azuread] config section (if enabled)
func mergeAzureSettings(currSettings *azsettings.AzureSettings, azureAdSettings *pluginsso.Settings) *azsettings.AzureSettings {
if azureAdSettings != nil {
settings := azureAdSettings.Values
tokenEndpointSettings := currSettings.UserIdentityTokenEndpoint
if tokenEndpointSettings == nil {
tokenEndpointSettings = &azsettings.TokenEndpointSettings{}
currSettings.UserIdentityTokenEndpoint = tokenEndpointSettings
}
tokenUrl, ok := settings["token_url"].(string)
if ok {
if !currSettings.UserIdentityTokenEndpoint.TokenUrlOverride {
currSettings.UserIdentityTokenEndpoint.TokenUrl = tokenUrl
}
}
clientAuth, ok := settings["client_authentication"].(string)
if ok {
if !currSettings.UserIdentityTokenEndpoint.ClientAuthenticationOverride {
if clientAuth != "none" {
currSettings.UserIdentityTokenEndpoint.ClientAuthentication = clientAuth
}
}
}
clientId, ok := settings["client_id"].(string)
if ok {
if !currSettings.UserIdentityTokenEndpoint.ClientIdOverride {
currSettings.UserIdentityTokenEndpoint.ClientId = clientId
}
}
clientSecret, ok := settings["client_secret"].(string)
if ok {
if !currSettings.UserIdentityTokenEndpoint.ClientSecretOverride {
currSettings.UserIdentityTokenEndpoint.ClientSecret = clientSecret
}
}
managedIdentityClientId, ok := settings["managed_identity_client_id"].(string)
if ok {
if !currSettings.UserIdentityTokenEndpoint.ManagedIdentityClientIdOverride {
currSettings.UserIdentityTokenEndpoint.ManagedIdentityClientId = managedIdentityClientId
}
}
federatedCredentialAudience, ok := settings["federated_credential_audience"].(string)
if ok {
if !currSettings.UserIdentityTokenEndpoint.FederatedCredentialAudienceOverride {
currSettings.UserIdentityTokenEndpoint.FederatedCredentialAudience = federatedCredentialAudience
}
}
}
return currSettings
}