From ceed9af15bb39a0b0e1f9fccde4ac48ac227e28b Mon Sep 17 00:00:00 2001 From: zhihaoguo Date: Wed, 29 Mar 2023 20:37:01 -0700 Subject: [PATCH 1/7] update enum values to be upper case --- .../properties/PasswordlessProperties.java | 20 +++--- .../kafka/AzureKafkaPropertiesUtils.java | 58 ++++++++-------- .../AzurePasswordlessProperties.java | 69 +++++++++++++++++++ 3 files changed, 108 insertions(+), 39 deletions(-) diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/PasswordlessProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/PasswordlessProperties.java index 2389c228a364..1d7b38c5c07b 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/PasswordlessProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/PasswordlessProperties.java @@ -66,61 +66,61 @@ enum AzurePasswordlessPropertiesMapping { /** * Getter function and setter biConsumer for scopes. */ - scopes(p -> p.getScopes(), + SCOPES(p -> p.getScopes(), (p, s) -> p.setProperty(AuthProperty.SCOPES.getPropertyKey(), s)), /** * Getter function and setter biConsumer for clientCertificatePassword. */ - clientCertificatePassword(p -> p.getCredential().getClientCertificatePassword(), + CLIENT_CERTIFICATE_PASSWORD(p -> p.getCredential().getClientCertificatePassword(), (p, s) -> p.setProperty(AuthProperty.CLIENT_CERTIFICATE_PASSWORD.getPropertyKey(), s)), /** * Getter function and setter biConsumer for clientCertificatePath. */ - clientCertificatePath(p -> p.getCredential().getClientCertificatePath(), + CLIENT_CERTIFICATE_PATH(p -> p.getCredential().getClientCertificatePath(), (p, s) -> p.setProperty(AuthProperty.CLIENT_CERTIFICATE_PATH.getPropertyKey(), s)), /** * Getter function and setter biConsumer for clientId. */ - clientId(p -> p.getCredential().getClientId(), + CLIENT_ID(p -> p.getCredential().getClientId(), (p, s) -> p.setProperty(AuthProperty.CLIENT_ID.getPropertyKey(), s)), /** * Getter function and setter biConsumer for clientSecret. */ - clientSecret(p -> p.getCredential().getClientSecret(), + CLIENT_SECRET(p -> p.getCredential().getClientSecret(), (p, s) -> p.setProperty(AuthProperty.CLIENT_SECRET.getPropertyKey(), s)), /** * Getter function and setter biConsumer for managedIdentityEnabled. */ - managedIdentityEnabled(p -> String.valueOf(p.getCredential().isManagedIdentityEnabled()), + MANAGED_IDENTITY_ENABLED(p -> String.valueOf(p.getCredential().isManagedIdentityEnabled()), (p, s) -> p.setProperty(AuthProperty.MANAGED_IDENTITY_ENABLED.getPropertyKey(), s)), /** * Getter function and setter biConsumer for password. */ - password(p -> p.getCredential().getPassword(), + PASSWORD(p -> p.getCredential().getPassword(), (p, s) -> p.setProperty(AuthProperty.PASSWORD.getPropertyKey(), s)), /** * Getter function and setter biConsumer for username. */ - username(p -> p.getCredential().getUsername(), + USERNAME(p -> p.getCredential().getUsername(), (p, s) -> p.setProperty(AuthProperty.USERNAME.getPropertyKey(), s)), /** * Getter function and setter biConsumer for tenantId. */ - tenantId(p -> p.getProfile().getTenantId(), + TENANT_ID(p -> p.getProfile().getTenantId(), (p, s) -> p.setProperty(AuthProperty.TENANT_ID.getPropertyKey(), s)), /** * Getter function and setter biConsumer for authorityHost. */ - authorityHost(p -> p.getProfile().getEnvironment().getActiveDirectoryEndpoint(), + AUTHORITY_HOST(p -> p.getProfile().getEnvironment().getActiveDirectoryEndpoint(), (p, s) -> p.setProperty(AuthProperty.AUTHORITY_HOST.getPropertyKey(), s)); private Function getter; diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/kafka/AzureKafkaPropertiesUtils.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/kafka/AzureKafkaPropertiesUtils.java index a3ac2e2bd273..a5aacad353cc 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/kafka/AzureKafkaPropertiesUtils.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/kafka/AzureKafkaPropertiesUtils.java @@ -44,119 +44,119 @@ public static void copyJaasPropertyToAzureProperties(String source, AzurePasswor public enum AzureKafkaPasswordlessPropertiesMapping { - clientCertificatePassword(CREDENTIAL_PREFIX + "client-certificate-password", + CLIENT_CERTIFICATE_PASSWORD(CREDENTIAL_PREFIX + "client-certificate-password", p -> p.getCredential().getClientCertificatePassword(), (p, s) -> p.getCredential().setClientCertificatePassword(s)), - clientCertificatePath(CREDENTIAL_PREFIX + "client-certificate-path", + CLIENT_CERTIFICATE_PATH(CREDENTIAL_PREFIX + "client-certificate-path", p -> p.getCredential().getClientCertificatePath(), (p, s) -> p.getCredential().setClientCertificatePath(s)), - clientId(CREDENTIAL_PREFIX + "client-id", + CLIENT_ID(CREDENTIAL_PREFIX + "client-id", p -> p.getCredential().getClientId(), (p, s) -> p.getCredential().setClientId(s)), - clientSecret(CREDENTIAL_PREFIX + "client-secret", + CLIENT_SECRET(CREDENTIAL_PREFIX + "client-secret", p -> p.getCredential().getClientSecret(), (p, s) -> p.getCredential().setClientSecret(s)), - managedIdentityEnabled(CREDENTIAL_PREFIX + "managed-identity-enabled", + MANAGED_IDENTITY_ENABLED(CREDENTIAL_PREFIX + "managed-identity-enabled", p -> String.valueOf(p.getCredential().isManagedIdentityEnabled()), (p, s) -> p.getCredential().setManagedIdentityEnabled(Boolean.valueOf(s))), - password(CREDENTIAL_PREFIX + "password", + PASSWORD(CREDENTIAL_PREFIX + "password", p -> p.getCredential().getPassword(), (p, s) -> p.getCredential().setPassword(s)), - username(CREDENTIAL_PREFIX + "username", + USERNAME(CREDENTIAL_PREFIX + "username", p -> p.getCredential().getUsername(), (p, s) -> p.getCredential().setUsername(s)), - cloudType(PROFILE_PREFIX + "cloud-type", + CLOUD_TYPE(PROFILE_PREFIX + "cloud-type", p -> Optional.ofNullable(p.getProfile().getCloudType()).map(v -> v.name()).orElse(null), (p, s) -> p.getProfile().setCloudType(AzureProfileOptionsProvider.CloudType.fromString(s))), - activeDirectoryEndpoint(ENVIRONMENT_PREFIX + "active-directory-endpoint", + ACTIVE_DIRECTORY_ENDPOINT(ENVIRONMENT_PREFIX + "active-directory-endpoint", p -> p.getProfile().getEnvironment().getActiveDirectoryEndpoint(), (p, s) -> p.getProfile().getEnvironment().setActiveDirectoryEndpoint(s)), - activeDirectoryGraphApiVersion(ENVIRONMENT_PREFIX + "active-directory-graph-api-version", + ACTIVE_DIRECTORY_GRAPH_API_VERSION(ENVIRONMENT_PREFIX + "active-directory-graph-api-version", p -> p.getProfile().getEnvironment().getActiveDirectoryGraphApiVersion(), (p, s) -> p.getProfile().getEnvironment().setActiveDirectoryGraphApiVersion(s)), - activeDirectoryGraphEndpoint(ENVIRONMENT_PREFIX + "active-directory-graph-endpoint", + ACTIVE_DIRECTORY_GRAPH_ENDPOINT(ENVIRONMENT_PREFIX + "active-directory-graph-endpoint", p -> p.getProfile().getEnvironment().getActiveDirectoryGraphEndpoint(), (p, s) -> p.getProfile().getEnvironment().setActiveDirectoryGraphEndpoint(s)), - activeDirectoryResourceId(ENVIRONMENT_PREFIX + "active-directory-resource-id", + ACTIVE_DIRECTORY_RESOURCE_ID(ENVIRONMENT_PREFIX + "active-directory-resource-id", p -> p.getProfile().getEnvironment().getActiveDirectoryResourceId(), (p, s) -> p.getProfile().getEnvironment().setActiveDirectoryResourceId(s)), - azureApplicationInsightsEndpoint(ENVIRONMENT_PREFIX + "azure-application-insights-endpoint", + AZURE_APPLICATION_INSIGHTS_ENDPOINT(ENVIRONMENT_PREFIX + "azure-application-insights-endpoint", p -> p.getProfile().getEnvironment().getAzureApplicationInsightsEndpoint(), (p, s) -> p.getProfile().getEnvironment().setAzureApplicationInsightsEndpoint(s)), - azureDataLakeAnalyticsCatalogAndJobEndpointSuffix(ENVIRONMENT_PREFIX + "azure-data-lake-analytics-catalog-and-job-endpoint-suffix", + AZURE_DATA_LAKE_ANALYTICS_CATALOG_AND_JOB_ENDPOINT_SUFFIX(ENVIRONMENT_PREFIX + "azure-data-lake-analytics-catalog-and-job-endpoint-suffix", p -> p.getProfile().getEnvironment().getAzureDataLakeAnalyticsCatalogAndJobEndpointSuffix(), (p, s) -> p.getProfile().getEnvironment().setAzureDataLakeAnalyticsCatalogAndJobEndpointSuffix(s)), - azureDataLakeStoreFileSystemEndpointSuffix(ENVIRONMENT_PREFIX + "azure-data-lake-store-file-system-endpoint-suffix", + AZURE_DATA_LAKE_STORE_FILE_SYSTEM_ENDPOINT_SUFFIX(ENVIRONMENT_PREFIX + "azure_data_lake_store_file_system_endpoint_suffix", p -> p.getProfile().getEnvironment().getAzureDataLakeStoreFileSystemEndpointSuffix(), (p, s) -> p.getProfile().getEnvironment().setAzureDataLakeStoreFileSystemEndpointSuffix(s)), - azureLogAnalyticsEndpoint(ENVIRONMENT_PREFIX + "azure-log-analytics-endpoint", + AZURE_LOG_ANALYTICS_ENDPOINT(ENVIRONMENT_PREFIX + "azure_log_analytics_endpoint", p -> p.getProfile().getEnvironment().getAzureLogAnalyticsEndpoint(), (p, s) -> p.getProfile().getEnvironment().setAzureLogAnalyticsEndpoint(s)), - dataLakeEndpointResourceId(ENVIRONMENT_PREFIX + "data-lake-endpoint-resource-id", + DATA_LAKE_ENDPOINT_RESOURCE_ID(ENVIRONMENT_PREFIX + "data_lake_endpoint_resource_id", p -> p.getProfile().getEnvironment().getDataLakeEndpointResourceId(), (p, s) -> p.getProfile().getEnvironment().setDataLakeEndpointResourceId(s)), - galleryEndpoint(ENVIRONMENT_PREFIX + "gallery-endpoint", + GALLERY_ENDPOINT(ENVIRONMENT_PREFIX + "gallery_endpoint", p -> p.getProfile().getEnvironment().getGalleryEndpoint(), (p, s) -> p.getProfile().getEnvironment().setGalleryEndpoint(s)), - keyVaultDnsSuffix(ENVIRONMENT_PREFIX + "key-vault-dns-suffix", + KEY_VAULT_DNS_SUFFIX(ENVIRONMENT_PREFIX + "key_vault_dns_suffix", p -> p.getProfile().getEnvironment().getKeyVaultDnsSuffix(), (p, s) -> p.getProfile().getEnvironment().setKeyVaultDnsSuffix(s)), - managementEndpoint(ENVIRONMENT_PREFIX + "management-endpoint", + MANAGEMENT_ENDPOINT(ENVIRONMENT_PREFIX + "management_endpoint", p -> p.getProfile().getEnvironment().getManagementEndpoint(), (p, s) -> p.getProfile().getEnvironment().setManagementEndpoint(s)), - microsoftGraphEndpoint(ENVIRONMENT_PREFIX + "microsoft-graph-endpoint", + MICROSOFT_GRAPH_ENDPOINT(ENVIRONMENT_PREFIX + "microsoft_graph_endpoint", p -> p.getProfile().getEnvironment().getMicrosoftGraphEndpoint(), (p, s) -> p.getProfile().getEnvironment().setMicrosoftGraphEndpoint(s)), - portal(ENVIRONMENT_PREFIX + "portal", + PORTAL(ENVIRONMENT_PREFIX + "portal", p -> p.getProfile().getEnvironment().getPortal(), (p, s) -> p.getProfile().getEnvironment().setPortal(s)), - publishingProfile(ENVIRONMENT_PREFIX + "publishing-profile", + PUBLISHING_PROFILE(ENVIRONMENT_PREFIX + "publishing_profile", p -> p.getProfile().getEnvironment().getPublishingProfile(), (p, s) -> p.getProfile().getEnvironment().setPublishingProfile(s)), - resourceManagerEndpoint(ENVIRONMENT_PREFIX + "resource-manager-endpoint", + RESOURCE_MANAGER_ENDPOINT(ENVIRONMENT_PREFIX + "resource_manager_endpoint", p -> p.getProfile().getEnvironment().getResourceManagerEndpoint(), (p, s) -> p.getProfile().getEnvironment().setResourceManagerEndpoint(s)), - sqlManagementEndpoint(ENVIRONMENT_PREFIX + "sql-management-endpoint", + SQL_MANAGEMENT_ENDPOINT(ENVIRONMENT_PREFIX + "sql_management_endpoint", p -> p.getProfile().getEnvironment().getSqlManagementEndpoint(), (p, s) -> p.getProfile().getEnvironment().setSqlManagementEndpoint(s)), - sqlServerHostnameSuffix(ENVIRONMENT_PREFIX + "sql-server-hostname-suffix", + SQL_SERVER_HOSTNAME_SUFFIX(ENVIRONMENT_PREFIX + "sql_server_hostname_suffix", p -> p.getProfile().getEnvironment().getSqlServerHostnameSuffix(), (p, s) -> p.getProfile().getEnvironment().setSqlServerHostnameSuffix(s)), - storageEndpointSuffix(ENVIRONMENT_PREFIX + "storage-endpoint-suffix", + STORAGE_ENDPOINT_SUFFIX(ENVIRONMENT_PREFIX + "storage_endpoint_suffix", p -> p.getProfile().getEnvironment().getStorageEndpointSuffix(), (p, s) -> p.getProfile().getEnvironment().setStorageEndpointSuffix(s)), - subscriptionId(PROFILE_PREFIX + "subscription-id", + SUBSCRIPTION_ID(PROFILE_PREFIX + "subscription_id", p -> p.getProfile().getSubscriptionId(), (p, s) -> p.getProfile().setSubscriptionId(s)), - tenantId(PROFILE_PREFIX + "tenant-id", + TENANT_ID(PROFILE_PREFIX + "tenant_id", p -> p.getProfile().getTenantId(), (p, s) -> p.getProfile().setTenantId(s)); diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzurePasswordlessProperties.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzurePasswordlessProperties.java index 2c1fc1f36793..e6f1d0d21a0c 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzurePasswordlessProperties.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzurePasswordlessProperties.java @@ -73,4 +73,73 @@ public boolean isPasswordlessEnabled() { public void setPasswordlessEnabled(boolean passwordlessEnabled) { this.passwordlessEnabled = passwordlessEnabled; } + + public String getScopes() { + return scopes; + } + + public void setScopes(String scopes) { + this.scopes = scopes; + } + + public Properties toProperties() { + Properties target = new Properties(); + for (AzurePasswordlessPropertiesMapping m : AzurePasswordlessPropertiesMapping.values()) { + if (m.getter.apply(this) != null) { + m.setter.accept(target, m.getter.apply(this)); + } + } + return target; + } + + private enum AzurePasswordlessPropertiesMapping { + + SCOPES(p -> p.getScopes(), + (p, s) -> p.setProperty(AuthProperty.SCOPES.getPropertyKey(), s)), + + CLIENT_CERTIFICATE_PASSWORD(p -> p.getCredential().getClientCertificatePassword(), + (p, s) -> p.setProperty(AuthProperty.CLIENT_CERTIFICATE_PASSWORD.getPropertyKey(), s)), + + CLIENT_CERTIFICATE_PATH(p -> p.getCredential().getClientCertificatePath(), + (p, s) -> p.setProperty(AuthProperty.CLIENT_CERTIFICATE_PATH.getPropertyKey(), s)), + + CLIENT_ID(p -> p.getCredential().getClientId(), + (p, s) -> p.setProperty(AuthProperty.CLIENT_ID.getPropertyKey(), s)), + + CLIENT_SECRET(p -> p.getCredential().getClientSecret(), + (p, s) -> p.setProperty(AuthProperty.CLIENT_SECRET.getPropertyKey(), s)), + + MANAGED_IDENTITY_ENABLED(p -> String.valueOf(p.getCredential().isManagedIdentityEnabled()), + (p, s) -> p.setProperty(AuthProperty.MANAGED_IDENTITY_ENABLED.getPropertyKey(), s)), + + PASSWORD(p -> p.getCredential().getPassword(), + (p, s) -> p.setProperty(AuthProperty.PASSWORD.getPropertyKey(), s)), + + USERNAME(p -> p.getCredential().getUsername(), + (p, s) -> p.setProperty(AuthProperty.USERNAME.getPropertyKey(), s)), + + TENANT_ID(p -> p.getProfile().getTenantId(), + (p, s) -> p.setProperty(AuthProperty.TENANT_ID.getPropertyKey(), s)), + + AUTHORITY_HOST(p -> p.getProfile().getEnvironment().getActiveDirectoryEndpoint(), + (p, s) -> p.setProperty(AuthProperty.AUTHORITY_HOST.getPropertyKey(), s)); + + private Function getter; + private BiConsumer setter; + + AzurePasswordlessPropertiesMapping(Function getter, BiConsumer setter) { + this.getter = getter; + this.setter = setter; + } + + public Function getter() { + return getter; + } + + public BiConsumer setter() { + return setter; + } + + } } From e5cd6c4950e826544417d0c4b4d5bc66d9335519 Mon Sep 17 00:00:00 2001 From: zhihaoguo Date: Wed, 29 Mar 2023 20:57:25 -0700 Subject: [PATCH 2/7] revert wrong updates --- .../kafka/AzureKafkaPropertiesUtils.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/kafka/AzureKafkaPropertiesUtils.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/kafka/AzureKafkaPropertiesUtils.java index a5aacad353cc..8ce8183ec2bb 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/kafka/AzureKafkaPropertiesUtils.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/kafka/AzureKafkaPropertiesUtils.java @@ -100,31 +100,31 @@ public enum AzureKafkaPasswordlessPropertiesMapping { p -> p.getProfile().getEnvironment().getAzureDataLakeAnalyticsCatalogAndJobEndpointSuffix(), (p, s) -> p.getProfile().getEnvironment().setAzureDataLakeAnalyticsCatalogAndJobEndpointSuffix(s)), - AZURE_DATA_LAKE_STORE_FILE_SYSTEM_ENDPOINT_SUFFIX(ENVIRONMENT_PREFIX + "azure_data_lake_store_file_system_endpoint_suffix", + AZURE_DATA_LAKE_STORE_FILE_SYSTEM_ENDPOINT_SUFFIX(ENVIRONMENT_PREFIX + "azure-data-lake-store-file-system-endpoint-suffix", p -> p.getProfile().getEnvironment().getAzureDataLakeStoreFileSystemEndpointSuffix(), (p, s) -> p.getProfile().getEnvironment().setAzureDataLakeStoreFileSystemEndpointSuffix(s)), - AZURE_LOG_ANALYTICS_ENDPOINT(ENVIRONMENT_PREFIX + "azure_log_analytics_endpoint", + AZURE_LOG_ANALYTICS_ENDPOINT(ENVIRONMENT_PREFIX + "azure-log-analytics-endpoint", p -> p.getProfile().getEnvironment().getAzureLogAnalyticsEndpoint(), (p, s) -> p.getProfile().getEnvironment().setAzureLogAnalyticsEndpoint(s)), - DATA_LAKE_ENDPOINT_RESOURCE_ID(ENVIRONMENT_PREFIX + "data_lake_endpoint_resource_id", + DATA_LAKE_ENDPOINT_RESOURCE_ID(ENVIRONMENT_PREFIX + "data-lake-endpoint-resource-id", p -> p.getProfile().getEnvironment().getDataLakeEndpointResourceId(), (p, s) -> p.getProfile().getEnvironment().setDataLakeEndpointResourceId(s)), - GALLERY_ENDPOINT(ENVIRONMENT_PREFIX + "gallery_endpoint", + GALLERY_ENDPOINT(ENVIRONMENT_PREFIX + "gallery-endpoint", p -> p.getProfile().getEnvironment().getGalleryEndpoint(), (p, s) -> p.getProfile().getEnvironment().setGalleryEndpoint(s)), - KEY_VAULT_DNS_SUFFIX(ENVIRONMENT_PREFIX + "key_vault_dns_suffix", + KEY_VAULT_DNS_SUFFIX(ENVIRONMENT_PREFIX + "key-vault-dns-suffix", p -> p.getProfile().getEnvironment().getKeyVaultDnsSuffix(), (p, s) -> p.getProfile().getEnvironment().setKeyVaultDnsSuffix(s)), - MANAGEMENT_ENDPOINT(ENVIRONMENT_PREFIX + "management_endpoint", + MANAGEMENT_ENDPOINT(ENVIRONMENT_PREFIX + "management-endpoint", p -> p.getProfile().getEnvironment().getManagementEndpoint(), (p, s) -> p.getProfile().getEnvironment().setManagementEndpoint(s)), - MICROSOFT_GRAPH_ENDPOINT(ENVIRONMENT_PREFIX + "microsoft_graph_endpoint", + MICROSOFT_GRAPH_ENDPOINT(ENVIRONMENT_PREFIX + "microsoft-graph-endpoint", p -> p.getProfile().getEnvironment().getMicrosoftGraphEndpoint(), (p, s) -> p.getProfile().getEnvironment().setMicrosoftGraphEndpoint(s)), @@ -132,31 +132,31 @@ public enum AzureKafkaPasswordlessPropertiesMapping { p -> p.getProfile().getEnvironment().getPortal(), (p, s) -> p.getProfile().getEnvironment().setPortal(s)), - PUBLISHING_PROFILE(ENVIRONMENT_PREFIX + "publishing_profile", + PUBLISHING_PROFILE(ENVIRONMENT_PREFIX + "publishing-profile", p -> p.getProfile().getEnvironment().getPublishingProfile(), (p, s) -> p.getProfile().getEnvironment().setPublishingProfile(s)), - RESOURCE_MANAGER_ENDPOINT(ENVIRONMENT_PREFIX + "resource_manager_endpoint", + RESOURCE_MANAGER_ENDPOINT(ENVIRONMENT_PREFIX + "resource-manager-endpoint", p -> p.getProfile().getEnvironment().getResourceManagerEndpoint(), (p, s) -> p.getProfile().getEnvironment().setResourceManagerEndpoint(s)), - SQL_MANAGEMENT_ENDPOINT(ENVIRONMENT_PREFIX + "sql_management_endpoint", + SQL_MANAGEMENT_ENDPOINT(ENVIRONMENT_PREFIX + "sql-management-endpoint", p -> p.getProfile().getEnvironment().getSqlManagementEndpoint(), (p, s) -> p.getProfile().getEnvironment().setSqlManagementEndpoint(s)), - SQL_SERVER_HOSTNAME_SUFFIX(ENVIRONMENT_PREFIX + "sql_server_hostname_suffix", + SQL_SERVER_HOSTNAME_SUFFIX(ENVIRONMENT_PREFIX + "sql-server-hostname-suffix", p -> p.getProfile().getEnvironment().getSqlServerHostnameSuffix(), (p, s) -> p.getProfile().getEnvironment().setSqlServerHostnameSuffix(s)), - STORAGE_ENDPOINT_SUFFIX(ENVIRONMENT_PREFIX + "storage_endpoint_suffix", + STORAGE_ENDPOINT_SUFFIX(ENVIRONMENT_PREFIX + "storage-endpoint-suffix", p -> p.getProfile().getEnvironment().getStorageEndpointSuffix(), (p, s) -> p.getProfile().getEnvironment().setStorageEndpointSuffix(s)), - SUBSCRIPTION_ID(PROFILE_PREFIX + "subscription_id", + SUBSCRIPTION_ID(PROFILE_PREFIX + "subscription-id", p -> p.getProfile().getSubscriptionId(), (p, s) -> p.getProfile().setSubscriptionId(s)), - TENANT_ID(PROFILE_PREFIX + "tenant_id", + TENANT_ID(PROFILE_PREFIX + "tenant-id", p -> p.getProfile().getTenantId(), (p, s) -> p.getProfile().setTenantId(s)); From 3a11ae7dfed3a9805c52aa5fd8dd8e5b22641d45 Mon Sep 17 00:00:00 2001 From: zhihaoguo Date: Wed, 29 Mar 2023 23:59:02 -0700 Subject: [PATCH 3/7] fix test case error --- .../kafka/KafkaOAuth2AuthenticateCallbackHandlerTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/kafka/KafkaOAuth2AuthenticateCallbackHandlerTest.java b/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/kafka/KafkaOAuth2AuthenticateCallbackHandlerTest.java index 403828fa7bdb..26e4317da6dc 100644 --- a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/kafka/KafkaOAuth2AuthenticateCallbackHandlerTest.java +++ b/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/kafka/KafkaOAuth2AuthenticateCallbackHandlerTest.java @@ -27,7 +27,7 @@ import java.util.Map; import static com.azure.spring.cloud.service.implementation.kafka.AzureKafkaPropertiesUtils.AZURE_TOKEN_CREDENTIAL; -import static com.azure.spring.cloud.service.implementation.kafka.AzureKafkaPropertiesUtils.AzureKafkaPasswordlessPropertiesMapping.managedIdentityEnabled; +import static com.azure.spring.cloud.service.implementation.kafka.AzureKafkaPropertiesUtils.AzureKafkaPasswordlessPropertiesMapping.MANAGED_IDENTITY_ENABLED; import static com.azure.spring.cloud.service.implementation.kafka.AzureOAuthBearerTokenTest.FAKE_TOKEN; import static org.apache.kafka.clients.CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG; import static org.apache.kafka.common.config.SaslConfigs.SASL_JAAS_CONFIG; @@ -87,7 +87,7 @@ void testCreateTokenCredentialByResolver() { Map configs = new HashMap<>(); configs.put(BOOTSTRAP_SERVERS_CONFIG, KAFKA_BOOTSTRAP_SERVER); Jaas jaas = new Jaas(OAuthBearerLoginModule.class.getName()); - jaas.getOptions().put(managedIdentityEnabled.propertyKey(), "true"); + jaas.getOptions().put(MANAGED_IDENTITY_ENABLED.propertyKey(), "true"); configs.put(SASL_JAAS_CONFIG, new Password(jaas.toString())); KafkaOAuth2AuthenticateCallbackHandler handler = new KafkaOAuth2AuthenticateCallbackHandler(); From 7df7bff621396f6bdcd4150dee663b5a0f644ac2 Mon Sep 17 00:00:00 2001 From: zhihaoguo Date: Tue, 4 Apr 2023 11:00:17 +0800 Subject: [PATCH 4/7] move AzurePasswordlessPropertiesMapping to implementation package --- .../AzurePasswordlessPropertiesMapping.java | 86 +++++++++++++++++++ .../properties/PasswordlessProperties.java | 80 +---------------- 2 files changed, 87 insertions(+), 79 deletions(-) create mode 100644 sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/properties/AzurePasswordlessPropertiesMapping.java diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/properties/AzurePasswordlessPropertiesMapping.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/properties/AzurePasswordlessPropertiesMapping.java new file mode 100644 index 000000000000..a921ba930017 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/properties/AzurePasswordlessPropertiesMapping.java @@ -0,0 +1,86 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.core.implementation.properties; + +import com.azure.identity.extensions.implementation.enums.AuthProperty; +import com.azure.spring.cloud.core.properties.PasswordlessProperties; + +import java.util.Properties; +import java.util.function.BiConsumer; +import java.util.function.Function; + +/** + * A mapping util used to convert a {@link PasswordlessProperties} instance to a {@link Properties} instance. + */ +public enum AzurePasswordlessPropertiesMapping { + + /** + * Getter function and setter biConsumer for scopes. + */ + SCOPES(p -> p.getScopes(), + (p, s) -> p.setProperty(AuthProperty.SCOPES.getPropertyKey(), s)), + + /** + * Getter function and setter biConsumer for clientCertificatePassword. + */ + CLIENT_CERTIFICATE_PASSWORD(p -> p.getCredential().getClientCertificatePassword(), + (p, s) -> p.setProperty(AuthProperty.CLIENT_CERTIFICATE_PASSWORD.getPropertyKey(), s)), + + /** + * Getter function and setter biConsumer for clientCertificatePath. + */ + CLIENT_CERTIFICATE_PATH(p -> p.getCredential().getClientCertificatePath(), + (p, s) -> p.setProperty(AuthProperty.CLIENT_CERTIFICATE_PATH.getPropertyKey(), s)), + + /** + * Getter function and setter biConsumer for clientId. + */ + CLIENT_ID(p -> p.getCredential().getClientId(), + (p, s) -> p.setProperty(AuthProperty.CLIENT_ID.getPropertyKey(), s)), + + /** + * Getter function and setter biConsumer for clientSecret. + */ + CLIENT_SECRET(p -> p.getCredential().getClientSecret(), + (p, s) -> p.setProperty(AuthProperty.CLIENT_SECRET.getPropertyKey(), s)), + + /** + * Getter function and setter biConsumer for managedIdentityEnabled. + */ + MANAGED_IDENTITY_ENABLED(p -> String.valueOf(p.getCredential().isManagedIdentityEnabled()), + (p, s) -> p.setProperty(AuthProperty.MANAGED_IDENTITY_ENABLED.getPropertyKey(), s)), + + /** + * Getter function and setter biConsumer for password. + */ + PASSWORD(p -> p.getCredential().getPassword(), + (p, s) -> p.setProperty(AuthProperty.PASSWORD.getPropertyKey(), s)), + + /** + * Getter function and setter biConsumer for username. + */ + USERNAME(p -> p.getCredential().getUsername(), + (p, s) -> p.setProperty(AuthProperty.USERNAME.getPropertyKey(), s)), + + /** + * Getter function and setter biConsumer for tenantId. + */ + TENANT_ID(p -> p.getProfile().getTenantId(), + (p, s) -> p.setProperty(AuthProperty.TENANT_ID.getPropertyKey(), s)), + + /** + * Getter function and setter biConsumer for authorityHost. + */ + AUTHORITY_HOST(p -> p.getProfile().getEnvironment().getActiveDirectoryEndpoint(), + (p, s) -> p.setProperty(AuthProperty.AUTHORITY_HOST.getPropertyKey(), s)); + + public Function getter; + public BiConsumer setter; + + AzurePasswordlessPropertiesMapping(Function getter, BiConsumer setter) { + this.getter = getter; + this.setter = setter; + } +} diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/PasswordlessProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/PasswordlessProperties.java index 1d7b38c5c07b..8a06771408bf 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/PasswordlessProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/PasswordlessProperties.java @@ -3,13 +3,11 @@ package com.azure.spring.cloud.core.properties; -import com.azure.identity.extensions.implementation.enums.AuthProperty; +import com.azure.spring.cloud.core.implementation.properties.AzurePasswordlessPropertiesMapping; import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; import com.azure.spring.cloud.core.provider.authentication.TokenCredentialOptionsProvider; import java.util.Properties; -import java.util.function.BiConsumer; -import java.util.function.Function; /** * Unified properties for Azure passwordless clients. @@ -58,80 +56,4 @@ default Properties toPasswordlessProperties() { return target; } - /** - * A mapping util used to convert a {@link PasswordlessProperties} instance to a {@link Properties} instance. - */ - enum AzurePasswordlessPropertiesMapping { - - /** - * Getter function and setter biConsumer for scopes. - */ - SCOPES(p -> p.getScopes(), - (p, s) -> p.setProperty(AuthProperty.SCOPES.getPropertyKey(), s)), - - /** - * Getter function and setter biConsumer for clientCertificatePassword. - */ - CLIENT_CERTIFICATE_PASSWORD(p -> p.getCredential().getClientCertificatePassword(), - (p, s) -> p.setProperty(AuthProperty.CLIENT_CERTIFICATE_PASSWORD.getPropertyKey(), s)), - - /** - * Getter function and setter biConsumer for clientCertificatePath. - */ - CLIENT_CERTIFICATE_PATH(p -> p.getCredential().getClientCertificatePath(), - (p, s) -> p.setProperty(AuthProperty.CLIENT_CERTIFICATE_PATH.getPropertyKey(), s)), - - /** - * Getter function and setter biConsumer for clientId. - */ - CLIENT_ID(p -> p.getCredential().getClientId(), - (p, s) -> p.setProperty(AuthProperty.CLIENT_ID.getPropertyKey(), s)), - - /** - * Getter function and setter biConsumer for clientSecret. - */ - CLIENT_SECRET(p -> p.getCredential().getClientSecret(), - (p, s) -> p.setProperty(AuthProperty.CLIENT_SECRET.getPropertyKey(), s)), - - /** - * Getter function and setter biConsumer for managedIdentityEnabled. - */ - MANAGED_IDENTITY_ENABLED(p -> String.valueOf(p.getCredential().isManagedIdentityEnabled()), - (p, s) -> p.setProperty(AuthProperty.MANAGED_IDENTITY_ENABLED.getPropertyKey(), s)), - - /** - * Getter function and setter biConsumer for password. - */ - PASSWORD(p -> p.getCredential().getPassword(), - (p, s) -> p.setProperty(AuthProperty.PASSWORD.getPropertyKey(), s)), - - /** - * Getter function and setter biConsumer for username. - */ - USERNAME(p -> p.getCredential().getUsername(), - (p, s) -> p.setProperty(AuthProperty.USERNAME.getPropertyKey(), s)), - - /** - * Getter function and setter biConsumer for tenantId. - */ - TENANT_ID(p -> p.getProfile().getTenantId(), - (p, s) -> p.setProperty(AuthProperty.TENANT_ID.getPropertyKey(), s)), - - /** - * Getter function and setter biConsumer for authorityHost. - */ - AUTHORITY_HOST(p -> p.getProfile().getEnvironment().getActiveDirectoryEndpoint(), - (p, s) -> p.setProperty(AuthProperty.AUTHORITY_HOST.getPropertyKey(), s)); - - private Function getter; - private BiConsumer setter; - - AzurePasswordlessPropertiesMapping(Function getter, BiConsumer setter) { - this.getter = getter; - this.setter = setter; - } - - } } - From 13ebd9bcab0270d7b3ee02e2faa172b17f36effd Mon Sep 17 00:00:00 2001 From: zhihaoguo Date: Tue, 4 Apr 2023 11:42:26 +0800 Subject: [PATCH 5/7] fix pipeline error --- .../AzurePasswordlessPropertiesMapping.java | 12 ++++++++++-- .../core/properties/PasswordlessProperties.java | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/properties/AzurePasswordlessPropertiesMapping.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/properties/AzurePasswordlessPropertiesMapping.java index a921ba930017..26d2b8a086b0 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/properties/AzurePasswordlessPropertiesMapping.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/properties/AzurePasswordlessPropertiesMapping.java @@ -75,8 +75,16 @@ public enum AzurePasswordlessPropertiesMapping { AUTHORITY_HOST(p -> p.getProfile().getEnvironment().getActiveDirectoryEndpoint(), (p, s) -> p.setProperty(AuthProperty.AUTHORITY_HOST.getPropertyKey(), s)); - public Function getter; - public BiConsumer setter; + private Function getter; + private BiConsumer setter; + + public Function getGetter() { + return getter; + } + + public BiConsumer getSetter() { + return setter; + } AzurePasswordlessPropertiesMapping(Function getter, BiConsumer setter) { diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/PasswordlessProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/PasswordlessProperties.java index 8a06771408bf..a315650bc0ab 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/PasswordlessProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/PasswordlessProperties.java @@ -49,8 +49,8 @@ public interface PasswordlessProperties extends TokenCredentialOptionsProvider, default Properties toPasswordlessProperties() { Properties target = new Properties(); for (AzurePasswordlessPropertiesMapping m : AzurePasswordlessPropertiesMapping.values()) { - if (m.getter.apply(this) != null) { - m.setter.accept(target, m.getter.apply(this)); + if (m.getGetter().apply(this) != null) { + m.getSetter().accept(target, m.getGetter().apply(this)); } } return target; From 5cbc9b275e3cb2cd0471296d5f127dcdd1197013 Mon Sep 17 00:00:00 2001 From: Xiaolu Dai Date: Tue, 27 Jun 2023 14:29:43 +0800 Subject: [PATCH 6/7] refactor passwordless properties to reduce duplication --- .../jdbc/JdbcPropertiesBeanPostProcessor.java | 2 +- .../AzureJdbcPasswordlessProperties.java | 2 +- .../AzureKafkaPasswordlessProperties.java | 4 +- ...itional-spring-configuration-metadata.json | 22 +++--- ...essorWithApplicationContextRunnerTest.java | 2 +- .../AzurePasswordlessProperties.java | 70 ++----------------- 6 files changed, 21 insertions(+), 81 deletions(-) rename sdk/spring/{spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless => spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties}/AzureJdbcPasswordlessProperties.java (97%) rename sdk/spring/{spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless => spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties}/AzureKafkaPasswordlessProperties.java (96%) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessor.java index a9443e2dbc64..95ecdea00068 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessor.java @@ -10,7 +10,7 @@ import com.azure.spring.cloud.core.implementation.util.AzurePasswordlessPropertiesUtils; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.identity.credential.provider.SpringTokenCredentialProvider; -import com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties; +import com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureJdbcPasswordlessProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureJdbcPasswordlessProperties.java similarity index 97% rename from sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureJdbcPasswordlessProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureJdbcPasswordlessProperties.java index 689b13a25c0a..e330eefe2438 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureJdbcPasswordlessProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureJdbcPasswordlessProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.service.implementation.passwordless; +package com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties; import com.azure.spring.cloud.core.properties.PasswordlessProperties; import com.azure.spring.cloud.core.properties.authentication.TokenCredentialProperties; diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureKafkaPasswordlessProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureKafkaPasswordlessProperties.java similarity index 96% rename from sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureKafkaPasswordlessProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureKafkaPasswordlessProperties.java index 9b99c5f0795f..e19b1b2a909d 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureKafkaPasswordlessProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureKafkaPasswordlessProperties.java @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.service.implementation.passwordless; +package com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties; import com.azure.spring.cloud.core.properties.PasswordlessProperties; import com.azure.spring.cloud.core.properties.authentication.TokenCredentialProperties; import com.azure.spring.cloud.core.properties.profile.AzureProfileProperties; /** - * Configuration properties for passwordless connections with Azure ServiceBus. + * Configuration properties for passwordless connections with Azure Event Hubs Kafka. */ public class AzureKafkaPasswordlessProperties implements PasswordlessProperties { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 2f3aa7bc275a..2fbf22be3e74 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -532,68 +532,68 @@ "name": "spring.datasource.azure.credential.client-id", "type": "java.lang.String", "description": "Client ID to use when performing service principal authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.credential.client-secret", "type": "java.lang.String", "description": "Client secret to use when performing service principal authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.credential.client-certificate-password", "type": "java.lang.String", "description": "Password of the certificate file.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.credential.client-certificate-path", "type": "java.lang.String", "description": "Path of a PEM certificate file to use when performing service principal authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.credential.username", "type": "java.lang.String", "description": "Username to use when performing username\/password authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.credential.password", "type": "java.lang.String", "description": "Password to use when performing username\/password authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.credential.managed-identity-enabled", "type": "java.lang.Boolean", "description": "Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties", + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties", "defaultValue": false }, { "name": "spring.datasource.azure.profile.environment.active-directory-endpoint", "type": "java.lang.String", "description": "The Azure Active Directory endpoint to connect to.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.profile.tenant-id", "type": "java.lang.String", "description": "Tenant ID for Azure resources.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.profile.cloud-type", "type": "java.lang.String", "description": "Name of the Azure cloud to connect to. Supported types are: AZURE, AZURE_CHINA, AZURE_US_GOVERNMENT, OTHER. The default value is `AZURE`.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.passwordless-enabled", "type": "java.lang.Boolean", "description": "Whether to enable passwordless connections to Azure databases by using OAuth2 Azure Active Directory token credentials.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties", + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties", "defaultValue": false }, { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessorWithApplicationContextRunnerTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessorWithApplicationContextRunnerTest.java index 3a85569689b7..34badc584b5f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessorWithApplicationContextRunnerTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessorWithApplicationContextRunnerTest.java @@ -9,7 +9,7 @@ import com.azure.spring.cloud.autoconfigure.implementation.context.AzureTokenCredentialAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.service.implementation.identity.credential.provider.SpringTokenCredentialProvider; -import com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties; +import com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzurePasswordlessProperties.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzurePasswordlessProperties.java index e6f1d0d21a0c..0a900015795d 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzurePasswordlessProperties.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzurePasswordlessProperties.java @@ -4,21 +4,21 @@ package com.azure.spring.cloud.service.implementation.passwordless; import com.azure.spring.cloud.core.properties.AzureProperties; +import com.azure.spring.cloud.core.properties.PasswordlessProperties; import com.azure.spring.cloud.core.properties.authentication.TokenCredentialProperties; import com.azure.spring.cloud.core.properties.client.ClientProperties; import com.azure.spring.cloud.core.properties.profile.AzureProfileProperties; import com.azure.spring.cloud.core.properties.proxy.ProxyProperties; -import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; -import com.azure.spring.cloud.core.provider.authentication.TokenCredentialOptionsProvider; /** - * Implement {@link TokenCredentialOptionsProvider} and {@link AzureProfileOptionsProvider} for Spring Cloud Azure - * support for other third party services. + * Implement {@link PasswordlessProperties} for Spring Cloud Azure support for other third party services. */ -public class AzurePasswordlessProperties implements AzureProperties { +public class AzurePasswordlessProperties implements PasswordlessProperties, AzureProperties { private AzureProfileProperties profile = new AzureProfileProperties(); + private String scopes; + private TokenCredentialProperties credential = new TokenCredentialProperties(); // Use client options inside credential for azure identity @@ -82,64 +82,4 @@ public void setScopes(String scopes) { this.scopes = scopes; } - public Properties toProperties() { - Properties target = new Properties(); - for (AzurePasswordlessPropertiesMapping m : AzurePasswordlessPropertiesMapping.values()) { - if (m.getter.apply(this) != null) { - m.setter.accept(target, m.getter.apply(this)); - } - } - return target; - } - - private enum AzurePasswordlessPropertiesMapping { - - SCOPES(p -> p.getScopes(), - (p, s) -> p.setProperty(AuthProperty.SCOPES.getPropertyKey(), s)), - - CLIENT_CERTIFICATE_PASSWORD(p -> p.getCredential().getClientCertificatePassword(), - (p, s) -> p.setProperty(AuthProperty.CLIENT_CERTIFICATE_PASSWORD.getPropertyKey(), s)), - - CLIENT_CERTIFICATE_PATH(p -> p.getCredential().getClientCertificatePath(), - (p, s) -> p.setProperty(AuthProperty.CLIENT_CERTIFICATE_PATH.getPropertyKey(), s)), - - CLIENT_ID(p -> p.getCredential().getClientId(), - (p, s) -> p.setProperty(AuthProperty.CLIENT_ID.getPropertyKey(), s)), - - CLIENT_SECRET(p -> p.getCredential().getClientSecret(), - (p, s) -> p.setProperty(AuthProperty.CLIENT_SECRET.getPropertyKey(), s)), - - MANAGED_IDENTITY_ENABLED(p -> String.valueOf(p.getCredential().isManagedIdentityEnabled()), - (p, s) -> p.setProperty(AuthProperty.MANAGED_IDENTITY_ENABLED.getPropertyKey(), s)), - - PASSWORD(p -> p.getCredential().getPassword(), - (p, s) -> p.setProperty(AuthProperty.PASSWORD.getPropertyKey(), s)), - - USERNAME(p -> p.getCredential().getUsername(), - (p, s) -> p.setProperty(AuthProperty.USERNAME.getPropertyKey(), s)), - - TENANT_ID(p -> p.getProfile().getTenantId(), - (p, s) -> p.setProperty(AuthProperty.TENANT_ID.getPropertyKey(), s)), - - AUTHORITY_HOST(p -> p.getProfile().getEnvironment().getActiveDirectoryEndpoint(), - (p, s) -> p.setProperty(AuthProperty.AUTHORITY_HOST.getPropertyKey(), s)); - - private Function getter; - private BiConsumer setter; - - AzurePasswordlessPropertiesMapping(Function getter, BiConsumer setter) { - this.getter = getter; - this.setter = setter; - } - - public Function getter() { - return getter; - } - - public BiConsumer setter() { - return setter; - } - - } } From ddb5e4c10849ed826acf7daaf07ec8e21958fca9 Mon Sep 17 00:00:00 2001 From: Xiaolu Dai Date: Tue, 27 Jun 2023 15:06:08 +0800 Subject: [PATCH 7/7] remove the germany cloud type scopes --- .../jms/properties/AzureServiceBusJmsProperties.java | 2 -- .../properties/AzureJdbcPasswordlessProperties.java | 2 -- 2 files changed, 4 deletions(-) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/properties/AzureServiceBusJmsProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/properties/AzureServiceBusJmsProperties.java index e732a0fc627f..882ef3f11f67 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/properties/AzureServiceBusJmsProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/properties/AzureServiceBusJmsProperties.java @@ -27,14 +27,12 @@ public class AzureServiceBusJmsProperties implements InitializingBean, Passwordl private static final String SERVICE_BUS_SCOPE_AZURE = "https://servicebus.azure.net/.default"; private static final String SERVICE_BUS_SCOPE_AZURE_CHINA = SERVICE_BUS_SCOPE_AZURE; - private static final String SERVICE_BUS_SCOPE_AZURE_GERMANY = SERVICE_BUS_SCOPE_AZURE; private static final String SERVICE_BUS_SCOPE_AZURE_US_GOVERNMENT = SERVICE_BUS_SCOPE_AZURE; private static final Map SERVICEBUS_SCOPE_MAP = new HashMap() { { put(CloudType.AZURE, SERVICE_BUS_SCOPE_AZURE); put(CloudType.AZURE_CHINA, SERVICE_BUS_SCOPE_AZURE_CHINA); - put(CloudType.AZURE_GERMANY, SERVICE_BUS_SCOPE_AZURE_GERMANY); put(CloudType.AZURE_US_GOVERNMENT, SERVICE_BUS_SCOPE_AZURE_US_GOVERNMENT); } }; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureJdbcPasswordlessProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureJdbcPasswordlessProperties.java index e330eefe2438..f9951793aad1 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureJdbcPasswordlessProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureJdbcPasswordlessProperties.java @@ -17,14 +17,12 @@ public class AzureJdbcPasswordlessProperties implements PasswordlessProperties { private static final String JDBC_SCOPE_AZURE = "https://ossrdbms-aad.database.windows.net/.default"; private static final String JDBC_SCOPE_AZURE_CHINA = "https://ossrdbms-aad.database.chinacloudapi.cn/.default"; - private static final String JDBC_SCOPE_AZURE_GERMANY = "https://ossrdbms-aad.database.cloudapi.de/.default"; private static final String JDBC_SCOPE_AZURE_US_GOVERNMENT = "https://ossrdbms-aad.database.usgovcloudapi.net/.default"; private static final Map JDBC_SCOPE_MAP = new HashMap() { { put(CloudType.AZURE, JDBC_SCOPE_AZURE); put(CloudType.AZURE_CHINA, JDBC_SCOPE_AZURE_CHINA); - put(CloudType.AZURE_GERMANY, JDBC_SCOPE_AZURE_GERMANY); put(CloudType.AZURE_US_GOVERNMENT, JDBC_SCOPE_AZURE_US_GOVERNMENT); } };