mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-24 09:35:39 -05:00
Kusto NoAuth authentication (#1161)
* Added username and password to DataSourceConnectionDetails. Refactored KustoClient>GetKustoConnectionStringBuilder to accept no username or password for no credentials authentication. * Removed invalid Unit Test and added 2 unit tests for testing authentication type. * Added validation for dstsAuth and AzureMFA in DataSourceFactory. Added unit test for validation.
This commit is contained in:
@@ -7,5 +7,7 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource.Contracts
|
||||
public string UserToken { get; set; }
|
||||
public string ConnectionString { get; set; }
|
||||
public string AuthenticationType { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string Password { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -8,8 +8,8 @@ using Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection;
|
||||
using Microsoft.Kusto.ServiceLayer.DataSource.Intellisense;
|
||||
using Microsoft.Kusto.ServiceLayer.LanguageServices;
|
||||
using Microsoft.Kusto.ServiceLayer.LanguageServices.Contracts;
|
||||
using Microsoft.Kusto.ServiceLayer.Workspace.Contracts;
|
||||
using Microsoft.Kusto.ServiceLayer.Utility;
|
||||
using Microsoft.Kusto.ServiceLayer.Workspace.Contracts;
|
||||
|
||||
namespace Microsoft.Kusto.ServiceLayer.DataSource
|
||||
{
|
||||
@@ -18,8 +18,6 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource
|
||||
{
|
||||
public IDataSource Create(DataSourceType dataSourceType, ConnectionDetails connectionDetails, string ownerUri)
|
||||
{
|
||||
ValidationUtils.IsArgumentNotNullOrWhiteSpace(connectionDetails.AccountToken, nameof(connectionDetails.AccountToken));
|
||||
|
||||
switch (dataSourceType)
|
||||
{
|
||||
case DataSourceType.Kusto:
|
||||
@@ -39,13 +37,21 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource
|
||||
|
||||
private DataSourceConnectionDetails MapKustoConnectionDetails(ConnectionDetails connectionDetails)
|
||||
{
|
||||
if (connectionDetails.AuthenticationType == "dstsAuth" || connectionDetails.AuthenticationType == "AzureMFA")
|
||||
{
|
||||
ValidationUtils.IsTrue<ArgumentException>(!string.IsNullOrWhiteSpace(connectionDetails.AccountToken),
|
||||
$"The Kusto User Token is not specified - set {nameof(connectionDetails.AccountToken)}");
|
||||
}
|
||||
|
||||
return new DataSourceConnectionDetails
|
||||
{
|
||||
ServerName = connectionDetails.ServerName,
|
||||
DatabaseName = connectionDetails.DatabaseName,
|
||||
ConnectionString = connectionDetails.ConnectionString,
|
||||
AuthenticationType = connectionDetails.AuthenticationType,
|
||||
UserToken = connectionDetails.AccountToken
|
||||
UserToken = connectionDetails.AccountToken,
|
||||
UserName = connectionDetails.UserName,
|
||||
Password = connectionDetails.Password
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -74,9 +74,6 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource
|
||||
|
||||
private KustoConnectionStringBuilder GetKustoConnectionStringBuilder(DataSourceConnectionDetails connectionDetails)
|
||||
{
|
||||
ValidationUtils.IsTrue<ArgumentException>(!string.IsNullOrWhiteSpace(connectionDetails.UserToken),
|
||||
$"The Kusto User Token is not specified - set {nameof(connectionDetails.UserToken)}");
|
||||
|
||||
var stringBuilder = string.IsNullOrWhiteSpace(connectionDetails.ConnectionString)
|
||||
? new KustoConnectionStringBuilder(connectionDetails.ServerName, connectionDetails.DatabaseName)
|
||||
: new KustoConnectionStringBuilder(connectionDetails.ConnectionString);
|
||||
@@ -87,10 +84,16 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource
|
||||
stringBuilder.InitialCatalog = databaseName;
|
||||
|
||||
ValidationUtils.IsNotNull(ClusterName, nameof(ClusterName));
|
||||
|
||||
return connectionDetails.AuthenticationType == "dstsAuth"
|
||||
? stringBuilder.WithDstsUserTokenAuthentication(connectionDetails.UserToken)
|
||||
: stringBuilder.WithAadUserTokenAuthentication(connectionDetails.UserToken);
|
||||
|
||||
switch (connectionDetails.AuthenticationType)
|
||||
{
|
||||
case "AzureMFA": return stringBuilder.WithAadUserTokenAuthentication(connectionDetails.UserToken);
|
||||
case "dstsAuth": return stringBuilder.WithDstsUserTokenAuthentication(connectionDetails.UserToken);
|
||||
default:
|
||||
return string.IsNullOrWhiteSpace(connectionDetails.UserName) && string.IsNullOrWhiteSpace(connectionDetails.Password)
|
||||
? stringBuilder
|
||||
: stringBuilder.WithKustoBasicAuthentication(connectionDetails.UserName, connectionDetails.Password);
|
||||
}
|
||||
}
|
||||
|
||||
private ClientRequestProperties GetClientRequestProperties(CancellationToken cancellationToken)
|
||||
|
||||
Reference in New Issue
Block a user