client

package
v0.19.0-alpha Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 2, 2025 License: MPL-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConfigureEntraIDClientOptions

func ConfigureEntraIDClientOptions(ctx context.Context, config *ProviderData, authorityURL string) (policy.ClientOptions, error)

ConfigureEntraIDClientOptions configures the Entra ID client options based on the provided configuration

func ConfigureGraphClientOptions

func ConfigureGraphClientOptions(ctx context.Context, config *ProviderData) (*http.Client, error)

ConfigureGraphClientOptions configures the Graph client options based on the provided configuration

func ObtainCredential

func ObtainCredential(ctx context.Context, config *ProviderData, clientOptions policy.ClientOptions) (azcore.TokenCredential, error)

ObtainCredential performs the necessary steps to obtain a TokenCredential based on the provider configuration. It uses the CredentialFactory and CredentialStrategy to create the appropriate credential type based on the authentication method defined within the provider configuraton.

func SetCloudConstants

func SetCloudConstants(cloud string) (string, string, string, string, error)

SetCloudConstants returns the OAuth authority URL, Graph API scope, and Graph API service root based on the provided cloud type.

func SetGraphBetaClientForDataSource

func SetGraphBetaClientForDataSource(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse, dataSourceName string) *msgraphbetasdk.GraphServiceClient

SetGraphBetaClientForDataSource is a helper function to retrieve and validate the Graph Beta client for data sources.

func SetGraphBetaClientForResource

func SetGraphBetaClientForResource(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse, resourceName string) *msgraphbetasdk.GraphServiceClient

SetGraphBetaClientForResource is a helper function to retrieve and validate the Graph Beta client for resources.

func SetGraphStableClientForDataSource

func SetGraphStableClientForDataSource(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse, dataSourceName string) *msgraphsdk.GraphServiceClient

SetGraphStableClientForDataSource is a helper function to retrieve and validate the Graph V1.0 client for data sources.

func SetGraphStableClientForResource

func SetGraphStableClientForResource(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse, resourceName string) *msgraphsdk.GraphServiceClient

SetGraphStableClientForResource is a helper function to retrieve and validate the Graph V1.0 client for resources.

Types

type AuthenticatedHTTPClient

type AuthenticatedHTTPClient struct {
	// contains filtered or unexported fields
}

AuthenticatedHTTPClient wraps an HTTP client with Microsoft Graph authentication

func NewAuthenticatedHTTPClient

func NewAuthenticatedHTTPClient(baseClient *http.Client, credential azcore.TokenCredential, scope, baseURL string) *AuthenticatedHTTPClient

NewAuthenticatedHTTPClient creates a new HTTP client with authentication for Microsoft Graph

func SetGraphBetaHTTPClientForDataSource

func SetGraphBetaHTTPClientForDataSource(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse, dataSourceName string) *AuthenticatedHTTPClient

SetGraphBetaHTTPClientForDataSource is a helper function to retrieve and validate the Graph Beta HTTP client for data sources.

func SetGraphBetaHTTPClientForResource

func SetGraphBetaHTTPClientForResource(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse, resourceName string) *AuthenticatedHTTPClient

SetGraphBetaHTTPClientForResource is a helper function to retrieve and validate the Graph Beta HTTP client for resources.

func SetGraphV1HTTPClientForDataSource

func SetGraphV1HTTPClientForDataSource(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse, dataSourceName string) *AuthenticatedHTTPClient

SetGraphV1HTTPClientForDataSource is a helper function to retrieve and validate the Graph V1.0 HTTP client for data sources.

func SetGraphV1HTTPClientForResource

func SetGraphV1HTTPClientForResource(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse, resourceName string) *AuthenticatedHTTPClient

SetGraphV1HTTPClientForResource is a helper function to retrieve and validate the Graph V1.0 HTTP client for resources.

func (*AuthenticatedHTTPClient) Do

Do performs an HTTP request with authentication

func (*AuthenticatedHTTPClient) GetBaseURL

func (c *AuthenticatedHTTPClient) GetBaseURL() string

GetBaseURL returns the base URL for this client

func (*AuthenticatedHTTPClient) GetClient

func (c *AuthenticatedHTTPClient) GetClient() *http.Client

GetClient returns the underlying HTTP client

type AzureDevOpsOIDCStrategy

type AzureDevOpsOIDCStrategy struct{}

AzureDevOpsOIDCStrategy implements the credential strategy for Azure DevOps OIDC authentication

func (*AzureDevOpsOIDCStrategy) GetCredential

func (s *AzureDevOpsOIDCStrategy) GetCredential(ctx context.Context, config *ProviderData, clientOptions policy.ClientOptions) (azcore.TokenCredential, error)

type AzureDeveloperCLIStrategy

type AzureDeveloperCLIStrategy struct{}

AzureDeveloperCLIStrategy implements the credential strategy for Azure Developer CLI authentication

func (*AzureDeveloperCLIStrategy) GetCredential

func (s *AzureDeveloperCLIStrategy) GetCredential(ctx context.Context, config *ProviderData, clientOptions policy.ClientOptions) (azcore.TokenCredential, error)

type ClientCertificateStrategy

type ClientCertificateStrategy struct{}

ClientCertificateStrategy implements the credential strategy for client certificate authentication

func (*ClientCertificateStrategy) GetCredential

func (s *ClientCertificateStrategy) GetCredential(ctx context.Context, config *ProviderData, clientOptions policy.ClientOptions) (azcore.TokenCredential, error)

type ClientOptions

type ClientOptions struct {
	// EnableRetry indicates whether to enable retry
	EnableRetry bool
	// MaxRetries is the maximum number of retries
	MaxRetries int64
	// RetryDelaySeconds is the delay between retries in seconds
	RetryDelaySeconds int64
	// EnableRedirect indicates whether to enable redirect
	EnableRedirect bool
	// MaxRedirects is the maximum number of redirects
	MaxRedirects int64
	// EnableCompression indicates whether to enable compression
	EnableCompression bool
	// CustomUserAgent is the custom user agent
	CustomUserAgent string
	// EnableHeadersInspection indicates whether to enable headers inspection
	EnableHeadersInspection bool
	// TimeoutSeconds is the timeout in seconds
	TimeoutSeconds int64
	// UseProxy indicates whether to use a proxy
	UseProxy bool
	// ProxyURL is the proxy URL
	ProxyURL string
	// ProxyUsername is the proxy username
	ProxyUsername string
	// ProxyPassword is the proxy password
	ProxyPassword string
	// EnableChaos indicates whether to enable chaos
	EnableChaos bool
	// ChaosPercentage is the chaos percentage
	ChaosPercentage int64
	// ChaosStatusCode is the chaos status code
	ChaosStatusCode int64
	// ChaosStatusMessage is the chaos status message
	ChaosStatusMessage string
}

ClientOptions represents the options for the Microsoft Graph client

type ClientSecretStrategy

type ClientSecretStrategy struct{}

ClientSecretStrategy implements the credential strategy for client secret authentication

func (*ClientSecretStrategy) GetCredential

func (s *ClientSecretStrategy) GetCredential(ctx context.Context, config *ProviderData, clientOptions policy.ClientOptions) (azcore.TokenCredential, error)

type CredentialStrategy

type CredentialStrategy interface {
	GetCredential(ctx context.Context, config *ProviderData, clientOptions policy.ClientOptions) (azcore.TokenCredential, error)
}

CredentialStrategy defines the interface for credential creation strategies

type DeviceCodeStrategy

type DeviceCodeStrategy struct{}

DeviceCodeStrategy implements the credential strategy for device code authentication

func (*DeviceCodeStrategy) GetCredential

func (s *DeviceCodeStrategy) GetCredential(ctx context.Context, config *ProviderData, clientOptions policy.ClientOptions) (azcore.TokenCredential, error)

type EntraIDOptions

type EntraIDOptions struct {
	// ClientID is the client ID (application ID) for the Entra ID application
	ClientID string
	// ClientSecret is the client secret for the Entra ID application
	ClientSecret string
	// ClientCertificate is the path to the client certificate file
	ClientCertificate string
	// ClientCertificatePassword is the password for the client certificate
	ClientCertificatePassword string
	// Username is the username for interactive authentication
	Username string
	// RedirectUrl is the redirect URL for interactive authentication
	RedirectUrl string
	// FederatedTokenFilePath is the path to the federated token file
	FederatedTokenFilePath string
	// ManagedIdentityClientID is the client ID for managed identity authentication
	ManagedIdentityClientID string
	// ManagedIdentityResourceID is the resource ID for managed identity authentication
	ManagedIdentityResourceID string
	// OIDCTokenFilePath is the path to the OIDC token file
	OIDCTokenFilePath string
	// OIDCToken is the OIDC token
	OIDCToken string
	// OIDCRequestToken is the OIDC request token
	OIDCRequestToken string
	// OIDCRequestURL is the OIDC request URL
	OIDCRequestURL string
	// DisableInstanceDiscovery indicates whether to disable instance discovery
	DisableInstanceDiscovery bool
	// SendCertificateChain indicates whether to send the certificate chain
	SendCertificateChain bool
	// AdditionallyAllowedTenants is a list of additionally allowed tenants
	AdditionallyAllowedTenants []string
}

EntraIDOptions represents the options for Entra ID authentication

type GitHubOIDCStrategy

type GitHubOIDCStrategy struct{}

GitHubOIDCStrategy implements the credential strategy for GitHub OIDC authentication

func (*GitHubOIDCStrategy) GetCredential

func (s *GitHubOIDCStrategy) GetCredential(ctx context.Context, config *ProviderData, clientOptions policy.ClientOptions) (azcore.TokenCredential, error)

type GraphClientInterface

type GraphClientInterface interface {
	GetKiotaGraphV1Client() *msgraphsdk.GraphServiceClient
	GetKiotaGraphBetaClient() *msgraphbetasdk.GraphServiceClient
	GetGraphV1Client() *AuthenticatedHTTPClient
	GetGraphBetaClient() *AuthenticatedHTTPClient
}

GraphClientInterface defines the interface for GraphClients

func NewGraphClients

func NewGraphClients(ctx context.Context, data *ProviderData, diags *diag.Diagnostics) GraphClientInterface

NewGraphClients sets up the Microsoft Graph clients with the given configuration. It processes the provider data, sets up authentication, and initializes the Microsoft Graph clients (stable and beta).

The function supports various authentication methods, proxy settings, and national cloud deployments. It performs the following main steps:

  1. Determines cloud-specific constants and endpoints.
  2. Configures the Entra ID client options.
  3. Obtains credentials based on the specified authentication method.
  4. Creates and configures the Microsoft Graph clients (stable and beta).

If any errors occur during these steps, appropriate diagnostics are added to the diagnostics collection.

type GraphClients

type GraphClients struct {
	KiotaGraphV1Client   *msgraphsdk.GraphServiceClient
	KiotaGraphBetaClient *msgraphbetasdk.GraphServiceClient
	GraphV1Client        *AuthenticatedHTTPClient
	GraphBetaClient      *AuthenticatedHTTPClient
}

func (*GraphClients) GetGraphBetaClient

func (g *GraphClients) GetGraphBetaClient() *AuthenticatedHTTPClient

GetGraphBetaClient returns the Beta HTTP client for raw JSON calls

func (*GraphClients) GetGraphV1Client

func (g *GraphClients) GetGraphV1Client() *AuthenticatedHTTPClient

GetGraphV1Client returns the V1 HTTP client for raw JSON calls

func (*GraphClients) GetKiotaGraphBetaClient

func (g *GraphClients) GetKiotaGraphBetaClient() *msgraphbetasdk.GraphServiceClient

GetKiotaGraphBetaClient returns the beta client

func (*GraphClients) GetKiotaGraphV1Client

func (g *GraphClients) GetKiotaGraphV1Client() *msgraphsdk.GraphServiceClient

GetStableClient returns the stable client

type InteractiveBrowserStrategy

type InteractiveBrowserStrategy struct{}

InteractiveBrowserStrategy implements the credential strategy for interactive browser authentication

func (*InteractiveBrowserStrategy) GetCredential

func (s *InteractiveBrowserStrategy) GetCredential(ctx context.Context, config *ProviderData, clientOptions policy.ClientOptions) (azcore.TokenCredential, error)

type ManagedIdentityStrategy

type ManagedIdentityStrategy struct{}

ManagedIdentityStrategy implements the credential strategy for managed identity authentication

func (*ManagedIdentityStrategy) GetCredential

func (s *ManagedIdentityStrategy) GetCredential(ctx context.Context, config *ProviderData, clientOptions policy.ClientOptions) (azcore.TokenCredential, error)

type MockAuthProvider

type MockAuthProvider struct{}

MockAuthProvider implements the required authentication interface for testing

func (*MockAuthProvider) AuthenticateRequest

func (m *MockAuthProvider) AuthenticateRequest(ctx context.Context, request *abstractions.RequestInformation, additionalAuthenticationContext map[string]interface{}) error

AuthenticateRequest adds a mock authorization header to requests

type MockCredential

type MockCredential struct{}

MockCredential implements azcore.TokenCredential for testing

func (*MockCredential) GetToken

GetToken returns a mock access token

type MockGraphClients

type MockGraphClients struct {
	MockV1Client       *msgraphsdk.GraphServiceClient
	MockBetaClient     *msgraphbetasdk.GraphServiceClient
	MockV1HTTPClient   *AuthenticatedHTTPClient
	MockBetaHTTPClient *AuthenticatedHTTPClient
}

MockGraphClients is a mock implementation of GraphClientInterface for testing

func NewMockGraphClients

func NewMockGraphClients(httpClient *http.Client) *MockGraphClients

NewMockGraphClients creates a new instance of MockGraphClients with initialized mock clients

func (*MockGraphClients) GetGraphBetaClient

func (m *MockGraphClients) GetGraphBetaClient() *AuthenticatedHTTPClient

GetGraphBetaClient returns the mock Beta HTTP client

func (*MockGraphClients) GetGraphV1Client

func (m *MockGraphClients) GetGraphV1Client() *AuthenticatedHTTPClient

GetGraphV1Client returns the mock V1 HTTP client

func (*MockGraphClients) GetKiotaGraphBetaClient

func (m *MockGraphClients) GetKiotaGraphBetaClient() *msgraphbetasdk.GraphServiceClient

GetKiotaGraphBetaClient returns the mock Beta client

func (*MockGraphClients) GetKiotaGraphV1Client

func (m *MockGraphClients) GetKiotaGraphV1Client() *msgraphsdk.GraphServiceClient

GetKiotaGraphV1Client returns the mock V1 client

type OIDCStrategy

type OIDCStrategy struct{}

OIDCStrategy implements the credential strategy for OIDC authentication

func (*OIDCStrategy) GetCredential

func (s *OIDCStrategy) GetCredential(ctx context.Context, config *ProviderData, clientOptions policy.ClientOptions) (azcore.TokenCredential, error)

type ProviderData

type ProviderData struct {
	// Cloud is the Microsoft cloud environment to use (public, dod, gcc, gcchigh, china, etc.)
	Cloud string
	// TenantID is the Microsoft 365 tenant ID
	TenantID string
	// AuthMethod is the authentication method to use (client_secret, client_certificate, etc.)
	AuthMethod string
	// EntraIDOptions contains options for Entra ID authentication
	EntraIDOptions *EntraIDOptions
	// ClientOptions contains options for the Microsoft Graph client
	ClientOptions *ClientOptions
	// TelemetryOptout indicates whether to opt out of telemetry
	TelemetryOptout bool
	// DebugMode indicates whether debug mode is enabled
	DebugMode bool
}

ProviderData represents the data needed to configure the Microsoft Graph clients. This is a simplified version of the provider model that only includes the fields needed for client configuration.

func (*ProviderData) GetClientOptions

func (d *ProviderData) GetClientOptions() policy.ClientOptions

GetClientOptions returns the Azure SDK client options based on the provider data

type WorkloadIdentityStrategy

type WorkloadIdentityStrategy struct{}

WorkloadIdentityStrategy implements the credential strategy for workload identity authentication

func (*WorkloadIdentityStrategy) GetCredential

func (s *WorkloadIdentityStrategy) GetCredential(ctx context.Context, config *ProviderData, clientOptions policy.ClientOptions) (azcore.TokenCredential, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL