in internal/loader/configuration_client_manager.go [371:406]
func CreateTokenCredential(ctx context.Context, acpAuth *acpv1.AzureAppConfigurationProviderAuth, namespace string) (azcore.TokenCredential, error) {
// If User explicitly specify the authentication method
if acpAuth != nil {
if acpAuth.WorkloadIdentity != nil {
if acpAuth.WorkloadIdentity.ServiceAccountName != nil {
return newClientAssertionCredential(ctx, *acpAuth.WorkloadIdentity.ServiceAccountName, namespace)
}
workloadIdentityClientId, err := getWorkloadIdentityClientId(ctx, acpAuth.WorkloadIdentity, namespace)
if err != nil {
return nil, fmt.Errorf("fail to retrieve workload identity client ID from configMap '%s' : %s", acpAuth.WorkloadIdentity.ManagedIdentityClientIdReference.ConfigMap, err.Error())
}
return azidentity.NewWorkloadIdentityCredential(&azidentity.WorkloadIdentityCredentialOptions{
ClientID: workloadIdentityClientId,
})
}
if acpAuth.ServicePrincipalReference != nil {
parameter, err := getServicePrincipleAuthenticationParameters(ctx, types.NamespacedName{Namespace: namespace, Name: *acpAuth.ServicePrincipalReference})
if err != nil {
return nil, fmt.Errorf("fail to retrieve service principal secret from '%s': %s", *acpAuth.ServicePrincipalReference, err.Error())
}
return azidentity.NewClientSecretCredential(parameter.TenantId, parameter.ClientId, parameter.ClientSecret, nil)
}
if acpAuth.ManagedIdentityClientId != nil {
return azidentity.NewManagedIdentityCredential(&azidentity.ManagedIdentityCredentialOptions{
ID: azidentity.ClientID(*acpAuth.ManagedIdentityClientId),
})
}
} else {
return azidentity.NewManagedIdentityCredential(nil)
}
return nil, nil
}