Skip to content

feat: Allow different authentication methods for DataLake#274

Open
hopengfoong wants to merge 7 commits into
release/4.6.7from
feature/alternate-credentials-methods-4.6
Open

feat: Allow different authentication methods for DataLake#274
hopengfoong wants to merge 7 commits into
release/4.6.7from
feature/alternate-credentials-methods-4.6

Conversation

@hopengfoong

@hopengfoong hopengfoong commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

Description

Work Item ID: AB#58056 AB#58057 AB#58058 AB#58059 AB#58060

  • feat: Allow workload identity authentication
  • feat: Allow service principal authentication
  • feat: Allow shared access token authentication
  • feat: Allow access key or shared access token to be stored in key vault and accessed via workload identity or service principal

For now, workload identity is hidden by default

How has it been tested?

Locally, manually. Workload Identity is not tested yet due to it requiring special setup.
That is why it is hidden by default (unless a specific environment variable is set)

Release Note

Notable Changes

@cluedin-bot cluedin-bot Bot added the 4.6.7 label Jul 23, 2026
* feat: Allow workload identity authentication
* feat: Allow service principal authentication
* feat: Allow shared access token authentication
* feat: Allow access key or shared access token to be stored in key vault and accessed via workload identity or service principal

AB#58056 AB#58057 AB#58058 AB#58059 AB#58060
(cherry picked from commit 93a8cbeb4f00a1e2c5474a3b1f396b007cc8cd70)
@hopengfoong
hopengfoong force-pushed the feature/alternate-credentials-methods-4.6 branch from 50d5bf2 to e4766f2 Compare July 23, 2026 07:04
(cherry picked from commit dda40a742fcae66f5db4f23b04a42d597ff64eae)
(cherry picked from commit faf7835b67ef95a49c471945dc696fd2a0cdbd14)
@hopengfoong
hopengfoong marked this pull request as ready for review July 24, 2026 01:22
@hopengfoong
hopengfoong requested a review from a team as a code owner July 24, 2026 01:22
@hopengfoong
hopengfoong requested a review from Copilot July 24, 2026 01:22

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds multi-method authentication support to the Azure Data Lake connector, including Service Principal and (optionally hidden) Workload Identity, plus the ability to load an account key/SAS token from Azure Key Vault. This extends the connector’s configuration surface (UI + runtime) and updates storage client instantiation and integration tests accordingly.

Changes:

  • Introduces selectable authentication method (Shared Key/SAS, Service Principal, Workload Identity) and optional Key Vault secret retrieval.
  • Adds an extended configuration provider to dynamically hide/show authentication options (e.g., hide Workload Identity by default).
  • Updates common test infrastructure and adds/expands integration tests covering new auth paths and SAS validation.

Reviewed changes

Copilot reviewed 32 out of 32 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
test/integration/Connector.OneLake.Tests.Integration/OneLakeConnectorTests.cs Updates storage factory mock signature to pass constants mock.
test/integration/Connector.FileStorage.Common.Tests.Integration/StorageConnectorTestsBase.cs Extends base test hook to pass constants mock into storage factory creation.
test/integration/Connector.FabricOpenMirroring.Tests.Integration/FabricOpenMirroringConnectorTests.cs Updates storage factory mock signature to pass constants mock.
test/integration/Connector.AzureDataLake.Tests.Integration/SasTokenHelper.cs Adds helper to generate account SAS tokens for integration tests.
test/integration/Connector.AzureDataLake.Tests.Integration/AzureDataLakeStorageClientTests.cs Adds integration tests for SharedKey/SAS/ServicePrincipal/WorkloadIdentity client auth.
test/integration/Connector.AzureDataLake.Tests.Integration/AzureDataLakeConnectorTests.cs Expands connector integration tests for SAS validation + service principal / key vault scenarios.
test/integration/Connector.AmazonS3.Tests.Integration/AmazonS3ConnectorTests.cs Updates storage factory mock signature to pass constants mock.
src/Connector.FileStorage.Common/StorageExtendedConfigurationProvider.cs Fixes default source name constant for file storage extended configuration provider.
src/Connector.FileStorage.Common/ConnectorProviderBase.cs Adds overridable async configuration transformation step during crawl job data creation.
src/Connector.FileStorage.Common/Connector/StorageConnectorBase.cs Moves FileStorageConnectionVerificationResult out of nested class.
src/Connector.FileStorage.Common/Connector/FileStorageConnectionVerificationResult.cs Introduces standalone verification result type with HasException flag.
src/Connector.DataLake.Common/IDataLakeStorageConfiguration.cs Adds AccountName to shared Data Lake storage configuration contract.
src/Connector.DataLake.Common/IAzureServicePrincipalCredentialConfiguration.cs Removes redundant AccountName (now on IDataLakeStorageConfiguration).
src/Connector.DataLake.Common/Connector/DataLakeStorageFileClient.cs Adds internal OpenReadAsync helper for reading via DataLakeFileClient.
src/Connector.DataLake.Common/Connector/DataLakeStorageClient.cs Refactors service client creation into TokenCredential-based flow (service principal path).
src/Connector.AzureDataLake/InstallComponents.cs Registers AzureDataLakeExtendedConfigurationProvider in Windsor container.
src/Connector.AzureDataLake/IAzureSharedKeyCredentialConfiguration.cs Moves interface into AzureDataLake namespace and aligns with updated base contracts.
src/Connector.AzureDataLake/IAzureKeyVaultConfiguration.cs Adds Key Vault configuration interface for secret retrieval.
src/Connector.AzureDataLake/IAzureDataLakeConfigurationConstants.cs Adds feature-flag constants for enabling Workload Identity method.
src/Connector.AzureDataLake/Connector/AzureDataLakeStorageClient.cs Implements auth-method selection + optional Key Vault secret retrieval; supports SAS credential usage.
src/Connector.AzureDataLake/Connector/AzureDataLakeConnector.cs Extends VerifyConnection validation for auth method + SAS token time/permission checks.
src/Connector.AzureDataLake/Connector.AzureDataLake.csproj Adds Key Vault + private services dependencies and ignores-access-checks config.
src/Connector.AzureDataLake/AzureDataLakeStorageFactory.cs Constructs AzureDataLakeStorageClient with configuration constants.
src/Connector.AzureDataLake/AzureDataLakeExtendedConfigurationProvider.v47_to_Latest.cs Uses PrivateServices API to detect SaaS deployments (v47+).
src/Connector.AzureDataLake/AzureDataLakeExtendedConfigurationProvider.v46.cs Provides fallback SaaS detection behavior for v46.
src/Connector.AzureDataLake/AzureDataLakeExtendedConfigurationProvider.cs Implements dynamic option resolution for authentication methods (hide Workload Identity by default).
src/Connector.AzureDataLake/AzureDataLakeConnectorProvider.cs Ensures a default AuthenticationMethod is set when missing.
src/Connector.AzureDataLake/AzureDataLakeConnectorConfiguration.cs Adds auth method/key vault/service principal fields and SAS validation helpers.
src/Connector.AzureDataLake/AzureDataLakeConfigurationConstants.cs Adds new UI controls and dependencies for auth method, SP fields, and Key Vault settings; adds feature-flag keys.
src/Connector.AzureDataLake/AuthenticationMethods.cs Adds enum representing supported authentication methods with display names.
Server.Host.csproj.devonly.xml Ensures Key Vault Secrets package assets are copied for dev-only host scenarios.
Packages.props Adds/updates package versions (Azure.Identity, Azure.Security.KeyVault.Secrets, PrivateServices, etc.).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/Connector.AzureDataLake/AzureDataLakeConnectorConfiguration.cs Outdated
Comment thread test/integration/Connector.AzureDataLake.Tests.Integration/SasTokenHelper.cs Outdated
hopengfoong and others added 3 commits July 24, 2026 09:29
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 32 out of 32 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

test/integration/Connector.AzureDataLake.Tests.Integration/AzureDataLakeConnectorTests.cs:851

  • The cleanup DataLakeServiceClient uses the endpoint host from jobData.AccountName but uses credentials from a fresh base configuration. In tests where AccountName is intentionally invalid (e.g., the inexistent account name theory), this can cause cleanup to fail or throw during DeleteIfExists, potentially masking the original assertion/failure. Use the same account name for both the endpoint URI and the credential (typically the real account from CreateConfigurationWithoutStreamCache) so cleanup reliably targets the correct storage account.
        return new DataLakeServiceClient(
            new Uri($"https://{jobData.AccountName}.dfs.core.windows.net"),
        new StorageSharedKeyCredential(
            configuration[nameof(AzureDataLakeConfigurationConstants.AccountName)] as string,
            configuration[nameof(AzureDataLakeConfigurationConstants.AccountKey)] as string));

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants