From 487c7ce5425cbb44c68d0250c799fe0388b00f47 Mon Sep 17 00:00:00 2001 From: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com> Date: Fri, 17 Dec 2021 13:56:40 -0800 Subject: [PATCH] Do not mix inline and non-inline delegating constructors in polymorphic types (#3197) Co-authored-by: Anton Kolesnyk --- sdk/identity/azure-identity/CHANGELOG.md | 2 ++ .../identity/client_secret_credential.hpp | 15 ++---------- .../identity/managed_identity_credential.hpp | 5 +--- .../src/client_secret_credential.cpp | 23 +++++++++++++++++++ .../src/managed_identity_credential.cpp | 6 +++++ 5 files changed, 34 insertions(+), 17 deletions(-) diff --git a/sdk/identity/azure-identity/CHANGELOG.md b/sdk/identity/azure-identity/CHANGELOG.md index a12178a55..ef38f7925 100644 --- a/sdk/identity/azure-identity/CHANGELOG.md +++ b/sdk/identity/azure-identity/CHANGELOG.md @@ -8,6 +8,8 @@ ### Bugs Fixed +- [2741](https://github.com/Azure/azure-sdk-for-cpp/issues/2741) Fixed linking problem when Azure SDK is built as DLL. + ### Other Changes ## 1.1.0 (2021-08-10) diff --git a/sdk/identity/azure-identity/inc/azure/identity/client_secret_credential.hpp b/sdk/identity/azure-identity/inc/azure/identity/client_secret_credential.hpp index 44f53b379..8e1d43b02 100644 --- a/sdk/identity/azure-identity/inc/azure/identity/client_secret_credential.hpp +++ b/sdk/identity/azure-identity/inc/azure/identity/client_secret_credential.hpp @@ -73,10 +73,7 @@ namespace Azure { namespace Identity { std::string const& tenantId, std::string const& clientId, std::string const& clientSecret, - ClientSecretCredentialOptions const& options) - : ClientSecretCredential(tenantId, clientId, clientSecret, options.AuthorityHost, options) - { - } + ClientSecretCredentialOptions const& options); /** * @brief Constructs a Client Secret Credential. @@ -91,15 +88,7 @@ namespace Azure { namespace Identity { std::string clientId, std::string clientSecret, Core::Credentials::TokenCredentialOptions const& options - = Core::Credentials::TokenCredentialOptions()) - : ClientSecretCredential( - tenantId, - clientId, - clientSecret, - _detail::g_aadGlobalAuthority, - options) - { - } + = Core::Credentials::TokenCredentialOptions()); /** * @brief Destructs `%ClientSecretCredential`. diff --git a/sdk/identity/azure-identity/inc/azure/identity/managed_identity_credential.hpp b/sdk/identity/azure-identity/inc/azure/identity/managed_identity_credential.hpp index fdb1446cd..3e4863ec5 100644 --- a/sdk/identity/azure-identity/inc/azure/identity/managed_identity_credential.hpp +++ b/sdk/identity/azure-identity/inc/azure/identity/managed_identity_credential.hpp @@ -51,10 +51,7 @@ namespace Azure { namespace Identity { * @param options Options for token retrieval. */ explicit ManagedIdentityCredential( - Azure::Core::Credentials::TokenCredentialOptions const& options) - : ManagedIdentityCredential(std::string(), options) - { - } + Azure::Core::Credentials::TokenCredentialOptions const& options); /** * @brief Gets an authentication token. diff --git a/sdk/identity/azure-identity/src/client_secret_credential.cpp b/sdk/identity/azure-identity/src/client_secret_credential.cpp index 39a108213..2b895f745 100644 --- a/sdk/identity/azure-identity/src/client_secret_credential.cpp +++ b/sdk/identity/azure-identity/src/client_secret_credential.cpp @@ -32,6 +32,29 @@ ClientSecretCredential::ClientSecretCredential( m_requestBody = body.str(); } +ClientSecretCredential::ClientSecretCredential( + std::string const& tenantId, + std::string const& clientId, + std::string const& clientSecret, + ClientSecretCredentialOptions const& options) + : ClientSecretCredential(tenantId, clientId, clientSecret, options.AuthorityHost, options) +{ +} + +ClientSecretCredential::ClientSecretCredential( + std::string tenantId, + std::string clientId, + std::string clientSecret, + Core::Credentials::TokenCredentialOptions const& options) + : ClientSecretCredential( + tenantId, + clientId, + clientSecret, + _detail::g_aadGlobalAuthority, + options) +{ +} + ClientSecretCredential::~ClientSecretCredential() = default; Azure::Core::Credentials::AccessToken ClientSecretCredential::GetToken( diff --git a/sdk/identity/azure-identity/src/managed_identity_credential.cpp b/sdk/identity/azure-identity/src/managed_identity_credential.cpp index 38d414333..0d0c9737b 100644 --- a/sdk/identity/azure-identity/src/managed_identity_credential.cpp +++ b/sdk/identity/azure-identity/src/managed_identity_credential.cpp @@ -46,6 +46,12 @@ ManagedIdentityCredential::ManagedIdentityCredential( { } +ManagedIdentityCredential::ManagedIdentityCredential( + Azure::Core::Credentials::TokenCredentialOptions const& options) + : ManagedIdentityCredential(std::string(), options) +{ +} + Azure::Core::Credentials::AccessToken ManagedIdentityCredential::GetToken( Azure::Core::Credentials::TokenRequestContext const& tokenRequestContext, Azure::Core::Context const& context) const