in pkg/auth/auth.go [152:166]
func (c Config) GetCredential(podName, podNamespace, resource, aadEndpoint, tenantID, nmiPort string) (azcore.TokenCredential, error) {
// use switch case to ensure only one of the identity modes is enabled
switch {
case c.UsePodIdentity:
return getPodIdentityTokenCredential(podName, podNamespace, resource, tenantID, nmiPort)
case c.UseVMManagedIdentity:
return getManagedIdentityTokenCredential(c.UserAssignedIdentityID)
case len(c.AADClientSecret) > 0 && len(c.AADClientID) > 0:
return getServicePrincipalTokenCredential(c.AADClientID, c.AADClientSecret, aadEndpoint, tenantID)
case len(c.WorkloadIdentityClientID) > 0 && len(c.WorkloadIdentityToken) > 0:
return getWorkloadIdentityTokenCredential(c.WorkloadIdentityClientID, c.WorkloadIdentityToken, aadEndpoint, tenantID)
default:
return nil, fmt.Errorf("no identity mode is enabled")
}
}