2017-07-12 3 views
0

J'ai essayé l'exemple de https://github.com/blumu/azure-content/blob/master/articles/data-lake-analytics/data-lake-analytics-get-started-net-sdk.md Dans l'exemple ci-dessus, l'utilisateur s'est connecté à l'aide de la fenêtre interactive, mais je veux ouvrir une session en mode silencieux. Y a-t-il un autre moyen de le faire?Azure AAD utilisateur se connecter en mode silencieux pour Datalake U-SQL soumettre

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; 
} 

Répondre

2

Oui, en fait, il existe une façon de procéder. Je l'ai résolu récemment dans un projet comme celui-ci. Toute la magie réside dans la fonction LoginSilentAsync. Les détails peuvent être trouvés sur ce poste 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; 

    } 

J'invoquaient la Authentifier() Fonction dans le constructeur de la classe; puis a continué à l'utiliser comme ceci:

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); 

Laissez-moi savoir si c'est ce que vous demandiez