Azure::Core::Credentials (#1846)
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
This commit is contained in:
parent
2a1ea1f890
commit
865f707532
@ -41,6 +41,8 @@
|
||||
- Moved types in the `Azure::IO` namespace like `BodyStream` to `Azure::Core::IO`.
|
||||
- Moved `Azure::Core::ETag` to `Azure::ETag`.
|
||||
- Moved `Azure::Core::DateTime` to `Azure::DateTime`.
|
||||
- Renamed `Azure::Core::Http::TokenRequestOptions` to `Azure::Core::Credentials::TokenRequestContext`.
|
||||
- Moved `AccessToken`, `TokenCredential`, and `AuthenticationException` from `Azure::Core` to `Azure::Core::Credentials` namespace.
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
|
||||
@ -16,8 +16,9 @@
|
||||
#include <mutex>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
namespace Azure { namespace Core {
|
||||
namespace Azure { namespace Core { namespace Credentials {
|
||||
|
||||
/**
|
||||
* @brief Represents an access token.
|
||||
@ -35,9 +36,16 @@ namespace Azure { namespace Core {
|
||||
DateTime ExpiresOn;
|
||||
};
|
||||
|
||||
namespace Http {
|
||||
struct TokenRequestOptions;
|
||||
} // namespace Http
|
||||
/**
|
||||
* @brief Defines context for getting token.
|
||||
*/
|
||||
struct TokenRequestContext
|
||||
{
|
||||
/**
|
||||
* @brief Authentication scopes.
|
||||
*/
|
||||
std::vector<std::string> Scopes;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Token credential.
|
||||
@ -47,12 +55,12 @@ namespace Azure { namespace Core {
|
||||
/**
|
||||
* @brief Get an authentication token.
|
||||
*
|
||||
* @param tokenRequestOptions Options to get the token.
|
||||
* @param tokenRequestContext Context to get the token in.
|
||||
* @param context #Azure::Core::Context so that operation can be cancelled.
|
||||
*
|
||||
*/
|
||||
virtual AccessToken GetToken(
|
||||
Http::TokenRequestOptions const& tokenRequestOptions,
|
||||
TokenRequestContext const& tokenRequestContext,
|
||||
Context const& context) const = 0;
|
||||
|
||||
/// Destructor.
|
||||
@ -87,4 +95,4 @@ namespace Azure { namespace Core {
|
||||
*/
|
||||
char const* what() const noexcept override { return m_message.c_str(); }
|
||||
};
|
||||
}} // namespace Azure::Core
|
||||
}}} // namespace Azure::Core::Credentials
|
||||
|
||||
@ -342,26 +342,15 @@ namespace Azure { namespace Core { namespace Http {
|
||||
Context const& ctx) const override;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Defines options for getting token.
|
||||
*/
|
||||
struct TokenRequestOptions
|
||||
{
|
||||
/**
|
||||
* @brief Authentication scopes.
|
||||
*/
|
||||
std::vector<std::string> Scopes;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Bearer Token authentication policy.
|
||||
*/
|
||||
class BearerTokenAuthenticationPolicy : public HttpPolicy {
|
||||
private:
|
||||
std::shared_ptr<TokenCredential const> const m_credential;
|
||||
TokenRequestOptions m_tokenRequestOptions;
|
||||
std::shared_ptr<Credentials::TokenCredential const> const m_credential;
|
||||
Credentials::TokenRequestContext m_tokenRequestContext;
|
||||
|
||||
mutable AccessToken m_accessToken;
|
||||
mutable Credentials::AccessToken m_accessToken;
|
||||
mutable std::mutex m_accessTokenMutex;
|
||||
|
||||
BearerTokenAuthenticationPolicy(BearerTokenAuthenticationPolicy const&) = delete;
|
||||
@ -371,19 +360,19 @@ namespace Azure { namespace Core { namespace Http {
|
||||
/**
|
||||
* @brief Construct a Bearer Token authentication policy.
|
||||
*
|
||||
* @param credential A #Azure::Core::TokenCredential to use with this policy.
|
||||
* @param tokenRequestOptions #Azure::Core::Http::TokenRequestOptions.
|
||||
* @param credential An #Azure::Core::TokenCredential to use with this policy.
|
||||
* @param tokenRequestContext #Azure::Core::Credentials::TokenRequestContext.
|
||||
*/
|
||||
explicit BearerTokenAuthenticationPolicy(
|
||||
std::shared_ptr<TokenCredential const> credential,
|
||||
TokenRequestOptions tokenRequestOptions)
|
||||
: m_credential(std::move(credential)), m_tokenRequestOptions(std::move(tokenRequestOptions))
|
||||
std::shared_ptr<Credentials::TokenCredential const> credential,
|
||||
Credentials::TokenRequestContext tokenRequestContext)
|
||||
: m_credential(std::move(credential)), m_tokenRequestContext(std::move(tokenRequestContext))
|
||||
{
|
||||
}
|
||||
|
||||
std::unique_ptr<HttpPolicy> Clone() const override
|
||||
{
|
||||
return std::make_unique<BearerTokenAuthenticationPolicy>(m_credential, m_tokenRequestOptions);
|
||||
return std::make_unique<BearerTokenAuthenticationPolicy>(m_credential, m_tokenRequestContext);
|
||||
}
|
||||
|
||||
std::unique_ptr<RawResponse> Send(
|
||||
|
||||
@ -19,7 +19,7 @@ std::unique_ptr<RawResponse> BearerTokenAuthenticationPolicy::Send(
|
||||
// Refresh the token in 2 or less minutes before the actual expiration.
|
||||
if (std::chrono::system_clock::now() > (m_accessToken.ExpiresOn - std::chrono::minutes(2)))
|
||||
{
|
||||
m_accessToken = m_credential->GetToken(m_tokenRequestOptions, context);
|
||||
m_accessToken = m_credential->GetToken(m_tokenRequestContext, context);
|
||||
}
|
||||
|
||||
request.SetHeader("authorization", "Bearer " + m_accessToken.Token);
|
||||
|
||||
@ -44,7 +44,7 @@ namespace Azure { namespace Identity {
|
||||
* @brief This class is used by Azure SDK clients to authenticate with the Azure service using a
|
||||
* tenant ID, client ID and client secret.
|
||||
*/
|
||||
class ClientSecretCredential : public Core::TokenCredential {
|
||||
class ClientSecretCredential : public Core::Credentials::TokenCredential {
|
||||
private:
|
||||
std::string m_tenantId;
|
||||
std::string m_clientId;
|
||||
@ -70,8 +70,8 @@ namespace Azure { namespace Identity {
|
||||
{
|
||||
}
|
||||
|
||||
Core::AccessToken GetToken(
|
||||
Core::Http::TokenRequestOptions const& tokenRequestOptions,
|
||||
Core::Credentials::AccessToken GetToken(
|
||||
Core::Credentials::TokenRequestContext const& tokenRequestContext,
|
||||
Core::Context const& context) const override;
|
||||
};
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ namespace Azure { namespace Identity {
|
||||
/**
|
||||
* @brief An environment credential.
|
||||
*/
|
||||
class EnvironmentCredential : public Core::TokenCredential {
|
||||
class EnvironmentCredential : public Core::Credentials::TokenCredential {
|
||||
std::unique_ptr<TokenCredential> m_credentialImpl;
|
||||
|
||||
public:
|
||||
@ -34,8 +34,8 @@ namespace Azure { namespace Identity {
|
||||
*/
|
||||
explicit EnvironmentCredential();
|
||||
|
||||
Core::AccessToken GetToken(
|
||||
Core::Http::TokenRequestOptions const& tokenRequestOptions,
|
||||
Core::Credentials::AccessToken GetToken(
|
||||
Core::Credentials::TokenRequestContext const& tokenRequestContext,
|
||||
Core::Context const& context) const override;
|
||||
};
|
||||
|
||||
|
||||
@ -10,16 +10,17 @@
|
||||
#include <sstream>
|
||||
|
||||
using namespace Azure::Identity;
|
||||
using namespace Azure::Core::IO;
|
||||
|
||||
std::string const Azure::Identity::_detail::g_aadGlobalAuthority
|
||||
= "https://login.microsoftonline.com/";
|
||||
|
||||
Azure::Core::AccessToken ClientSecretCredential::GetToken(
|
||||
Azure::Core::Http::TokenRequestOptions const& tokenRequestOptions,
|
||||
Azure::Core::Credentials::AccessToken ClientSecretCredential::GetToken(
|
||||
Azure::Core::Credentials::TokenRequestContext const& tokenRequestContext,
|
||||
Azure::Core::Context const& context) const
|
||||
{
|
||||
using namespace Azure::Core;
|
||||
using namespace Azure::Core::Credentials;
|
||||
using namespace Azure::Core::IO;
|
||||
using namespace Azure::Core::Http;
|
||||
using namespace Azure::Core::Http::_internal;
|
||||
|
||||
@ -34,7 +35,7 @@ Azure::Core::AccessToken ClientSecretCredential::GetToken(
|
||||
body << "grant_type=client_credentials&client_id=" << Url::Encode(m_clientId)
|
||||
<< "&client_secret=" << Url::Encode(m_clientSecret);
|
||||
|
||||
auto const& scopes = tokenRequestOptions.Scopes;
|
||||
auto const& scopes = tokenRequestContext.Scopes;
|
||||
if (!scopes.empty())
|
||||
{
|
||||
auto scopesIter = scopes.begin();
|
||||
|
||||
@ -79,11 +79,11 @@ EnvironmentCredential::EnvironmentCredential()
|
||||
#endif
|
||||
}
|
||||
|
||||
Azure::Core::AccessToken EnvironmentCredential::GetToken(
|
||||
Azure::Core::Http::TokenRequestOptions const& tokenRequestOptions,
|
||||
Azure::Core::Credentials::AccessToken EnvironmentCredential::GetToken(
|
||||
Azure::Core::Credentials::TokenRequestContext const& tokenRequestContext,
|
||||
Azure::Core::Context const& context) const
|
||||
{
|
||||
using namespace Azure::Core;
|
||||
using namespace Azure::Core::Credentials;
|
||||
|
||||
if (!m_credentialImpl)
|
||||
{
|
||||
@ -91,5 +91,5 @@ Azure::Core::AccessToken EnvironmentCredential::GetToken(
|
||||
"Environment variables are not fully configured.");
|
||||
}
|
||||
|
||||
return m_credentialImpl->GetToken(tokenRequestOptions, context);
|
||||
return m_credentialImpl->GetToken(tokenRequestContext, context);
|
||||
}
|
||||
|
||||
@ -28,8 +28,8 @@ namespace Azure { namespace Identity { namespace Test {
|
||||
std::string m_tenantId;
|
||||
std::string m_clientId;
|
||||
std::string m_secret;
|
||||
Azure::Core::Http::TokenRequestOptions m_scopes;
|
||||
std::unique_ptr<Azure::Identity::ClientSecretCredential> m_credentail;
|
||||
Core::Credentials::TokenRequestContext m_tokenRequestContext;
|
||||
std::unique_ptr<Azure::Identity::ClientSecretCredential> m_credential;
|
||||
|
||||
public:
|
||||
/**
|
||||
@ -41,8 +41,8 @@ namespace Azure { namespace Identity { namespace Test {
|
||||
m_tenantId = m_options.GetMandatoryOption<std::string>("TenantId");
|
||||
m_clientId = m_options.GetMandatoryOption<std::string>("ClientId");
|
||||
m_secret = m_options.GetMandatoryOption<std::string>("Secret");
|
||||
m_scopes.Scopes.push_back(m_options.GetMandatoryOption<std::string>("Scope"));
|
||||
m_credentail = std::make_unique<Azure::Identity::ClientSecretCredential>(
|
||||
m_tokenRequestContext.Scopes.push_back(m_options.GetMandatoryOption<std::string>("Scope"));
|
||||
m_credential = std::make_unique<Azure::Identity::ClientSecretCredential>(
|
||||
m_tenantId, m_clientId, m_secret);
|
||||
}
|
||||
|
||||
@ -60,7 +60,7 @@ namespace Azure { namespace Identity { namespace Test {
|
||||
*/
|
||||
void Run(Azure::Core::Context const& context) override
|
||||
{
|
||||
auto t = m_credentail->GetToken(m_scopes, context);
|
||||
auto t = m_credential->GetToken(m_tokenRequestContext, context);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -42,7 +42,7 @@ namespace Azure { namespace Security { namespace KeyVault { namespace Keys {
|
||||
*/
|
||||
explicit KeyClient(
|
||||
std::string const& vaultUrl,
|
||||
std::shared_ptr<Core::TokenCredential const> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential const> credential,
|
||||
KeyClientOptions options = KeyClientOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -57,7 +57,7 @@ int main()
|
||||
std::cout << " - " << operation.ToString() << std::endl;
|
||||
}
|
||||
}
|
||||
catch (Azure::Core::AuthenticationException const& e)
|
||||
catch (Azure::Core::Credentials::AuthenticationException const& e)
|
||||
{
|
||||
std::cout << "Authentication Exception happened:" << std::endl << e.what() << std::endl;
|
||||
}
|
||||
|
||||
@ -18,18 +18,18 @@ using namespace Azure::Core::Http;
|
||||
|
||||
KeyClient::KeyClient(
|
||||
std::string const& vaultUrl,
|
||||
std::shared_ptr<Core::TokenCredential const> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential const> credential,
|
||||
KeyClientOptions options)
|
||||
{
|
||||
auto apiVersion = options.GetVersionString();
|
||||
|
||||
std::vector<std::unique_ptr<HttpPolicy>> perRetrypolicies;
|
||||
{
|
||||
Azure::Core::Http::TokenRequestOptions const tokenOptions
|
||||
Azure::Core::Credentials::TokenRequestContext const tokenContext
|
||||
= {{"https://vault.azure.net/.default"}};
|
||||
|
||||
perRetrypolicies.emplace_back(
|
||||
std::make_unique<BearerTokenAuthenticationPolicy>(credential, tokenOptions));
|
||||
std::make_unique<BearerTokenAuthenticationPolicy>(credential, tokenContext));
|
||||
}
|
||||
|
||||
m_pipeline = std::make_shared<Azure::Security::KeyVault::Common::_internal::KeyVaultPipeline>(
|
||||
|
||||
@ -31,7 +31,7 @@ namespace Azure { namespace Security { namespace KeyVault { namespace Keys { nam
|
||||
std::string m_tenantId;
|
||||
std::string m_clientId;
|
||||
std::string m_secret;
|
||||
std::shared_ptr<Azure::Identity::ClientSecretCredential> m_credentail;
|
||||
std::shared_ptr<Azure::Identity::ClientSecretCredential> m_credential;
|
||||
std::unique_ptr<Azure::Security::KeyVault::Keys::KeyClient> m_client;
|
||||
|
||||
public:
|
||||
@ -46,10 +46,10 @@ namespace Azure { namespace Security { namespace KeyVault { namespace Keys { nam
|
||||
m_tenantId = m_options.GetMandatoryOption<std::string>("TenantId");
|
||||
m_clientId = m_options.GetMandatoryOption<std::string>("ClientId");
|
||||
m_secret = m_options.GetMandatoryOption<std::string>("Secret");
|
||||
m_credentail = std::make_shared<Azure::Identity::ClientSecretCredential>(
|
||||
m_credential = std::make_shared<Azure::Identity::ClientSecretCredential>(
|
||||
m_tenantId, m_clientId, m_secret);
|
||||
m_client
|
||||
= std::make_unique<Azure::Security::KeyVault::Keys::KeyClient>(m_vaultUrl, m_credentail);
|
||||
= std::make_unique<Azure::Security::KeyVault::Keys::KeyClient>(m_vaultUrl, m_credential);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -65,7 +65,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
*/
|
||||
explicit AppendBlobClient(
|
||||
const std::string& blobUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const BlobClientOptions& options = BlobClientOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -74,7 +74,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
*/
|
||||
explicit BlobClient(
|
||||
const std::string& blobUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const BlobClientOptions& options = BlobClientOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -62,7 +62,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
*/
|
||||
explicit BlobContainerClient(
|
||||
const std::string& blobContainerUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const BlobClientOptions& options = BlobClientOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -55,7 +55,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
*/
|
||||
explicit BlobServiceClient(
|
||||
const std::string& serviceUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const BlobClientOptions& options = BlobClientOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -75,7 +75,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
*/
|
||||
explicit BlockBlobClient(
|
||||
const std::string& blobUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const BlobClientOptions& options = BlobClientOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -67,7 +67,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
*/
|
||||
explicit PageBlobClient(
|
||||
const std::string& blobUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const BlobClientOptions& options = BlobClientOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -29,7 +29,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
|
||||
AppendBlobClient::AppendBlobClient(
|
||||
const std::string& blobUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const BlobClientOptions& options)
|
||||
: BlobClient(blobUrl, std::move(credential), options)
|
||||
{
|
||||
|
||||
@ -73,7 +73,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
|
||||
BlobClient::BlobClient(
|
||||
const std::string& blobUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const BlobClientOptions& options)
|
||||
: BlobClient(blobUrl, options)
|
||||
{
|
||||
@ -84,11 +84,11 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
m_blobUrl.GetHost(), options.SecondaryHostForRetryReads));
|
||||
perRetryPolicies.emplace_back(std::make_unique<Storage::_detail::StoragePerRetryPolicy>());
|
||||
{
|
||||
Azure::Core::Http::TokenRequestOptions tokenOptions;
|
||||
tokenOptions.Scopes.emplace_back(Storage::_detail::StorageScope);
|
||||
Azure::Core::Credentials::TokenRequestContext tokenContext;
|
||||
tokenContext.Scopes.emplace_back(Storage::_detail::StorageScope);
|
||||
perRetryPolicies.emplace_back(
|
||||
std::make_unique<Azure::Core::Http::BearerTokenAuthenticationPolicy>(
|
||||
credential, tokenOptions));
|
||||
credential, tokenContext));
|
||||
}
|
||||
{
|
||||
Azure::Core::Http::_internal::ValueOptions valueOptions;
|
||||
|
||||
@ -69,7 +69,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
|
||||
BlobContainerClient::BlobContainerClient(
|
||||
const std::string& blobContainerUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const BlobClientOptions& options)
|
||||
: BlobContainerClient(blobContainerUrl, options)
|
||||
{
|
||||
@ -80,11 +80,11 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
m_blobContainerUrl.GetHost(), options.SecondaryHostForRetryReads));
|
||||
perRetryPolicies.emplace_back(std::make_unique<Storage::_detail::StoragePerRetryPolicy>());
|
||||
{
|
||||
Azure::Core::Http::TokenRequestOptions tokenOptions;
|
||||
tokenOptions.Scopes.emplace_back(Storage::_detail::StorageScope);
|
||||
Azure::Core::Credentials::TokenRequestContext tokenContext;
|
||||
tokenContext.Scopes.emplace_back(Storage::_detail::StorageScope);
|
||||
perRetryPolicies.emplace_back(
|
||||
std::make_unique<Azure::Core::Http::BearerTokenAuthenticationPolicy>(
|
||||
credential, tokenOptions));
|
||||
credential, tokenContext));
|
||||
}
|
||||
{
|
||||
Azure::Core::Http::_internal::ValueOptions valueOptions;
|
||||
|
||||
@ -64,7 +64,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
|
||||
BlobServiceClient::BlobServiceClient(
|
||||
const std::string& serviceUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const BlobClientOptions& options)
|
||||
: BlobServiceClient(serviceUrl, options)
|
||||
{
|
||||
@ -75,11 +75,11 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
m_serviceUrl.GetHost(), options.SecondaryHostForRetryReads));
|
||||
perRetryPolicies.emplace_back(std::make_unique<Storage::_detail::StoragePerRetryPolicy>());
|
||||
{
|
||||
Azure::Core::Http::TokenRequestOptions tokenOptions;
|
||||
tokenOptions.Scopes.emplace_back(Storage::_detail::StorageScope);
|
||||
Azure::Core::Credentials::TokenRequestContext tokenContext;
|
||||
tokenContext.Scopes.emplace_back(Storage::_detail::StorageScope);
|
||||
perRetryPolicies.emplace_back(
|
||||
std::make_unique<Azure::Core::Http::BearerTokenAuthenticationPolicy>(
|
||||
credential, tokenOptions));
|
||||
credential, tokenContext));
|
||||
}
|
||||
{
|
||||
Azure::Core::Http::_internal::ValueOptions valueOptions;
|
||||
|
||||
@ -33,7 +33,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
|
||||
BlockBlobClient::BlockBlobClient(
|
||||
const std::string& blobUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const BlobClientOptions& options)
|
||||
: BlobClient(blobUrl, std::move(credential), options)
|
||||
{
|
||||
|
||||
@ -32,7 +32,7 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
|
||||
PageBlobClient::PageBlobClient(
|
||||
const std::string& blobUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const BlobClientOptions& options)
|
||||
: BlobClient(blobUrl, std::move(credential), options)
|
||||
{
|
||||
|
||||
@ -54,7 +54,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
*/
|
||||
explicit DataLakeDirectoryClient(
|
||||
const std::string& directoryUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const DataLakeClientOptions& options = DataLakeClientOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -55,7 +55,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
*/
|
||||
explicit DataLakeFileClient(
|
||||
const std::string& fileUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const DataLakeClientOptions& options = DataLakeClientOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -56,7 +56,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
*/
|
||||
explicit DataLakeFileSystemClient(
|
||||
const std::string& fileSystemUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const DataLakeClientOptions& options = DataLakeClientOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -56,7 +56,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
*/
|
||||
explicit DataLakePathClient(
|
||||
const std::string& pathUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const DataLakeClientOptions& options = DataLakeClientOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -51,7 +51,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
*/
|
||||
explicit DataLakeServiceClient(
|
||||
const std::string& serviceUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const DataLakeClientOptions& options = DataLakeClientOptions());
|
||||
|
||||
/**
|
||||
|
||||
@ -48,7 +48,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
|
||||
DataLakeDirectoryClient::DataLakeDirectoryClient(
|
||||
const std::string& directoryUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const DataLakeClientOptions& options)
|
||||
: DataLakePathClient(directoryUrl, credential, options)
|
||||
{
|
||||
|
||||
@ -110,7 +110,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
|
||||
DataLakeFileClient::DataLakeFileClient(
|
||||
const std::string& fileUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const DataLakeClientOptions& options)
|
||||
: DataLakePathClient(fileUrl, credential, options)
|
||||
{
|
||||
|
||||
@ -76,7 +76,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
|
||||
DataLakeFileSystemClient::DataLakeFileSystemClient(
|
||||
const std::string& fileSystemUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const DataLakeClientOptions& options)
|
||||
: m_fileSystemUrl(fileSystemUrl), m_blobContainerClient(
|
||||
_detail::GetBlobUrlFromUrl(fileSystemUrl),
|
||||
@ -90,11 +90,11 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
m_fileSystemUrl.GetHost(), options.SecondaryHostForRetryReads));
|
||||
perRetryPolicies.emplace_back(std::make_unique<Storage::_detail::StoragePerRetryPolicy>());
|
||||
{
|
||||
Azure::Core::Http::TokenRequestOptions tokenOptions;
|
||||
tokenOptions.Scopes.emplace_back(Storage::_detail::StorageScope);
|
||||
Azure::Core::Credentials::TokenRequestContext tokenContext;
|
||||
tokenContext.Scopes.emplace_back(Storage::_detail::StorageScope);
|
||||
perRetryPolicies.emplace_back(
|
||||
std::make_unique<Azure::Core::Http::BearerTokenAuthenticationPolicy>(
|
||||
credential, tokenOptions));
|
||||
credential, tokenContext));
|
||||
}
|
||||
{
|
||||
Azure::Core::Http::_internal::ValueOptions valueOptions;
|
||||
|
||||
@ -114,7 +114,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
|
||||
DataLakePathClient::DataLakePathClient(
|
||||
const std::string& pathUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const DataLakeClientOptions& options)
|
||||
: m_pathUrl(pathUrl), m_blobClient(
|
||||
_detail::GetBlobUrlFromUrl(pathUrl),
|
||||
@ -128,11 +128,11 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
m_pathUrl.GetHost(), options.SecondaryHostForRetryReads));
|
||||
perRetryPolicies.emplace_back(std::make_unique<Storage::_detail::StoragePerRetryPolicy>());
|
||||
{
|
||||
Azure::Core::Http::TokenRequestOptions tokenOptions;
|
||||
tokenOptions.Scopes.emplace_back(Storage::_detail::StorageScope);
|
||||
Azure::Core::Credentials::TokenRequestContext tokenContext;
|
||||
tokenContext.Scopes.emplace_back(Storage::_detail::StorageScope);
|
||||
perRetryPolicies.emplace_back(
|
||||
std::make_unique<Azure::Core::Http::BearerTokenAuthenticationPolicy>(
|
||||
credential, tokenOptions));
|
||||
credential, tokenContext));
|
||||
}
|
||||
{
|
||||
Azure::Core::Http::_internal::ValueOptions valueOptions;
|
||||
|
||||
@ -117,7 +117,7 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
|
||||
DataLakeServiceClient::DataLakeServiceClient(
|
||||
const std::string& serviceUrl,
|
||||
std::shared_ptr<Core::TokenCredential> credential,
|
||||
std::shared_ptr<Core::Credentials::TokenCredential> credential,
|
||||
const DataLakeClientOptions& options)
|
||||
: m_serviceUrl(serviceUrl), m_blobServiceClient(
|
||||
_detail::GetBlobUrlFromUrl(serviceUrl),
|
||||
@ -131,11 +131,11 @@ namespace Azure { namespace Storage { namespace Files { namespace DataLake {
|
||||
m_serviceUrl.GetHost(), options.SecondaryHostForRetryReads));
|
||||
perRetryPolicies.emplace_back(std::make_unique<Storage::_detail::StoragePerRetryPolicy>());
|
||||
{
|
||||
Azure::Core::Http::TokenRequestOptions tokenOptions;
|
||||
tokenOptions.Scopes.emplace_back(Storage::_detail::StorageScope);
|
||||
Azure::Core::Credentials::TokenRequestContext tokenContext;
|
||||
tokenContext.Scopes.emplace_back(Storage::_detail::StorageScope);
|
||||
perRetryPolicies.emplace_back(
|
||||
std::make_unique<Azure::Core::Http::BearerTokenAuthenticationPolicy>(
|
||||
credential, tokenOptions));
|
||||
credential, tokenContext));
|
||||
}
|
||||
{
|
||||
Azure::Core::Http::_internal::ValueOptions valueOptions;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user