Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature | Azure Identity support - Phase 1 changes #1010

Merged
merged 9 commits into from Apr 15, 2021

Conversation

cheenamalhotra
Copy link
Member

@cheenamalhotra cheenamalhotra commented Mar 25, 2021

Phase 1 changes

  • Add new dependency on Azure.Identity v1.3.0.
  • Use Azure.Identity library to acquire token using ManagedIdentityCredential() for Managed Identity based authentication modes (ActiveDirectoryMSI and ActiveDirectoryManagedIdentity)
  • Merge "AzureManagedIdentityAuthenticationProvider" into "ActiveDirectoryAuthenticationProvider" to support MSI modes from the same class "ActiveDirectoryAuthenticationProvider"
  • Transition below authentication modes to start using Azure.Identity to acquire access token:
    • ActiveDirectoryManagedIdentity > ManagedIdentityCredential()
    • ActiveDirectoryMSI > ManagedIdentityCredential()
    • ActiveDirectoryServicePrincipal > ClientSecretCredential()
      • New addition: Tenant id (required) - uses default from database info
  • Accept "Client Id" for User-Assigned Managed Identity as Azure.Identity doesn't support "Object Id"
    • Use existing "UserId" connection property to accept "Client Id" instead of "Object Id' starting with v3.0
  • Pass "Connect Timeout" from SqlConnection property to SqlAuthenticationParameters to provide cancellation token to all Async calls in order to cancel token acquire request after "timeout" milliseconds.
    • For Interactive Authentication on .NET Core: Cancellation token cancels request after 3 mins [as of current design]

Public Observations:

  • 1 Breaking change:
    • "User Id" now accepts "Client Id" instead of "Object Id" for User-Assigned Managed Identity.
      • It was initially designed to keep the behavior in sync with other SQL drivers, but Azure.Identity doesn't support Object Id
  • 1 new Public API (read only)
    • SqlAuthenticationParameters.ConnectionTimeout
  • 1 new Dependency on all supported platforms:
    • Azure.Identity v1.3.0

@cheenamalhotra cheenamalhotra added 🆕 Public API Use this label for new API additions to the driver. 🔨 Breaking Change Use this label for breaking API changes in the driver. labels Mar 25, 2021
@cheenamalhotra cheenamalhotra added this to In Progress in SqlClient v3.0 via automation Mar 25, 2021
@cheenamalhotra cheenamalhotra added this to the 3.0.0-preview2 milestone Mar 25, 2021
SqlClient v3.0 automation moved this from In Progress to Reviewer Approved Apr 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔨 Breaking Change Use this label for breaking API changes in the driver. 🆕 Public API Use this label for new API additions to the driver.
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

Integrate with Azure.Identity
4 participants