Hi all,
We added some secret environment variables in AEM Cloud. And we configured them in our OSGI configurations like below.
{
"api-key":"$[secret:SECRET_VAR_NAME]"
}
My question is how can we get this secret value in a service? Do we need to treat this value "$[secret:SERVER_API_KEY]" as a placeholder and resolve it by ourselves?
Thanks,
Mengsha
Solved! Go to Solution.
Topics help categorize Community content and increase your ability to discover relevant content.
Views
Replies
Total Likes
Here is sample code
package com.example.core.config;
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
import org.osgi.service.metatype.annotations.AttributeDefinition;
@ObjectClassDefinition(name = "Secret Config", description = "Configuration for accessing a secret")
public @interface SecretConfig {
@AttributeDefinition(name = "API Secret Key", description = "Secret Key for external API")
String api_secret();
}
Reference it in your service implementation
package com.example.core.services.impl;
import com.example.core.config.SecretConfig;
import com.example.core.services.SecretService;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Modified;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ConfigurationPolicy;
import org.osgi.service.metatype.annotations.Designate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@component(
service = SecretService.class,
configurationPolicy = ConfigurationPolicy.REQUIRE
)
@Designate(ocd = SecretConfig.class)
public class SecretServiceImpl implements SecretService {
private static final Logger log = LoggerFactory.getLogger(SecretServiceImpl.class);
private String apiSecret;
@activate
@MODIFIED
protected void activate(SecretConfig config) {
this.apiSecret = config.api_secret();
log.info("Secret configuration loaded.");
}
@Override
public String getSecret() {
return apiSecret;
}
}
Views
Replies
Total Likes
@MengshaJiang : Secret and environment variables are automatically resolved to your osgi configuration. No customization is required for this once you have created them in cloud manager and created osgi config for it.
Your osgi service or component will resolve it for you.
thanks.
In AEM Cloud, you configure secrets via the Cloud Manager These secrets become available to your application at runtime, usually as environment variables.
String secretValue = System.getenv("SECRET_ENV_VAR_NAME");
Views
Replies
Total Likes
Here is sample code
package com.example.core.config;
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
import org.osgi.service.metatype.annotations.AttributeDefinition;
@ObjectClassDefinition(name = "Secret Config", description = "Configuration for accessing a secret")
public @interface SecretConfig {
@AttributeDefinition(name = "API Secret Key", description = "Secret Key for external API")
String api_secret();
}
Reference it in your service implementation
package com.example.core.services.impl;
import com.example.core.config.SecretConfig;
import com.example.core.services.SecretService;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Modified;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ConfigurationPolicy;
import org.osgi.service.metatype.annotations.Designate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@component(
service = SecretService.class,
configurationPolicy = ConfigurationPolicy.REQUIRE
)
@Designate(ocd = SecretConfig.class)
public class SecretServiceImpl implements SecretService {
private static final Logger log = LoggerFactory.getLogger(SecretServiceImpl.class);
private String apiSecret;
@activate
@MODIFIED
protected void activate(SecretConfig config) {
this.apiSecret = config.api_secret();
log.info("Secret configuration loaded.");
}
@Override
public String getSecret() {
return apiSecret;
}
}
Views
Replies
Total Likes
Hi Hemant_arora,
It worked! Thank you for your reply!
Regards,
Mengsha
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies