Azure AAD 用户以静默方式登录,用于数据湖 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;
}

是的,事实上,肯定有一种方法可以做到这一点。我最近在这样的项目中解决了这个问题。整个魔力在于LoginSilentAsync函数。详情可以在这篇Microsoft帖子中找到:https://learn.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);

让我知道这是否是你想要的

最新更新