Автоматический вход пользователя Azure AAD для отправки задания Datalake U-SQL

Я попробовал образец из https://github.com/blumu/azure-content/blob/master/articles/data-lake-analytics/data-lake-analytics-get-started-net-sdk..md В приведенном выше примере пользователь вошел в систему с помощью интерактивного всплывающего окна, но я хочу войти в систему без вывода сообщений. Есть ли другой способ сделать это?

 public static ServiceClientCredentials AuthenticateAzure(
    string domainName,
    string nativeClientAppCLIENTID)
{
    // User login via interactive popup
    SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
    // Use the client ID of an existing AAD "Native Client" application.
    var activeDirectoryClientSettings = ActiveDirectoryClientSettings.UsePromptOnly(nativeClientAppCLIENTID, new Uri("urn:ietf:wg:oauth:2.0:oob"));
    return UserTokenProvider.LoginWithPromptAsync(domainName, activeDirectoryClientSettings).Result;
}

person Arron    schedule 12.07.2017    source источник


Ответы (1)


Да, на самом деле, есть способ сделать это. Недавно я решил это в проекте, подобном этому. Вся магия заключается в функции LoginSilentAsync. Подробности можно найти в этом сообщении Microsoft: https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-get-started-net-sdk

 private ServiceClientCredentials Authenticate(string _adlsWebClientId, string _adlsClientSecret, string _adlsDomain)
    {               
        SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());

        ClientCredential clientCredential = new ClientCredential(_adlsWebClientId, _adlsClientSecret);

        return ApplicationTokenProvider.LoginSilentAsync(_adlsDomain, clientCredential).Result;

    }

Я вызвал функцию Authenticate() в конструкторе класса; а затем продолжил использовать его следующим образом:

 ServiceClientCredentials _creds = Authenticate(... ... ...);
 string _subscriptionId = "XXXXXXXXX";
// Create client objects and set the subscription ID
 DataLakeStoreAccountManagementClient _adlsClient = new  DataLakeStoreAccountManagementClient(_creds) { SubscriptionId = _subscriptionId };
 DataLakeStoreFileSystemManagementClient _adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(_creds);

Дайте мне знать, если это то, о чем вы просили

person candidson    schedule 12.07.2017