Toewijzing van geheimen aan configuratie OSGi
Om geheime waarden in de dienst bloot te stellen OSGi, hen in kaart brengen aan configuraties OSGi gebruikend OSGi geheime configuratiewaarden. Definieer de eigenschapnaam OSGi als sleutel om de geheime waarde van de SecretsManager.getSecret()
methode terug te winnen.
Definieer de geheimen in het OSGi-configuratiebestand /apps/example/osgiconfig/config/com.example.core.util.impl.SecretsManagerImpl.cfg.json
in uw AEM Maven-project. Elke eigenschap vertegenwoordigt een geheim dat in AEM wordt weergegeven, met de waarde ingesteld via Cloud Manager. De sleutel is de OSGi bezitsnaam, die wordt gebruikt om de geheime waarde van de SecretsManager
dienst terug te winnen.
{
"api.key": "$[secret:api_key]",
"service.password": "$[secret:service_password]"
}
Alternatief aan het gebruiken van de gedeelde geheime dienst OSGi, kunt u geheimen in de configuratie OSGi van de specifieke diensten direct omvatten die hen gebruiken. Deze benadering is nuttig wanneer de geheimen slechts door één enkele dienst OSGi nodig zijn en niet over de veelvoudige diensten worden gedeeld. In dit geval, worden de geheime waarden bepaald in het OSGi configuratiedossier voor de specifieke dienst en in de code van Java van de dienst via de @Activate
methode betreden.
Verbruiksgeheimen
De geheimen kunnen van de dienst worden verbruikt OSGi op diverse manieren, zoals van een het Verschilderen Model of een andere dienst OSGi. Hieronder staan voorbeelden van hoe u geheimen van beide kunt consumeren.
Van verkoopmodel
Sling Models bieden vaak bedrijfslogica voor AEM-sitecomponenten. De service SecretsManager
OSGi kan worden gebruikt via de @OsgiService
-annotatie en worden gebruikt in het Sling-model om de geheime waarde op te halen.
import com.example.core.util.SecretsManager;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.servlets.SlingHttpServletRequest;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.OsgiService;
@Model(
adaptables = {SlingHttpServletRequest.class, Resource.class},
adapters = {ExampleDatabaseModel.class}
)
public class ExampleDatabaseModelImpl implements ExampleDatabaseModel {
@OsgiService
SecretsManager secretsManager;
@Override
public String doWork() {
final String secret = secretsManager.getSecret("api.key");
// Do work with secret
}
}
Van OSGi-service
De diensten OSGi stellen vaak herbruikbare bedrijfslogica binnen AEM bloot, die door het Verschilderen Modellen, de diensten van AEM zoals Workflows, of andere douaneOSGi diensten wordt gebruikt. De service SecretsManager
OSGi kan via de @Reference
-annotatie worden gebruikt en binnen de OSGi-service worden gebruikt om de geheime waarde op te halen.
import com.example.core.util.SecretsManager;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
@Component
public class ExampleSecretConsumerImpl implements ExampleSecretConsumer {
@Reference
SecretsManager secretsManager;
public void doWork() {
final String secret = secretsManager.getSecret("service.password");
// Do work with the secret
}
}