use of org.apereo.cas.metadata.CasConfigurationMetadataRepository in project cas by apereo.
the class GenerateCryptoKeysCommand method generateKey.
/**
* Generate key.
*
* @param name the name
*/
@CliCommand(value = "generate-key", help = "Generate signing/encryption crypto keys for CAS settings")
public void generateKey(@CliOption(key = { "group" }, help = "Property group that holds the key (i.e. cas.webflow). The group must have a child category of 'crypto'.", mandatory = true, specifiedDefaultValue = "", unspecifiedDefaultValue = "", optionContext = "Property name for that holds the key") final String name) {
/*
Because the command is used both from the shell and CLI,
we need to validate parameters again.
*/
if (StringUtils.isBlank(name)) {
LOGGER.warn("No property/setting name is specified for signing/encryption key generation.");
return;
}
final CasConfigurationMetadataRepository repository = new CasConfigurationMetadataRepository();
final String cryptoGroup = name.concat(".crypto");
repository.getRepository().getAllGroups().entrySet().stream().filter(e -> e.getKey().startsWith(cryptoGroup)).forEach(e -> {
final ConfigurationMetadataGroup grp = e.getValue();
grp.getSources().forEach(Unchecked.biConsumer((k, v) -> {
final Object obj = ClassUtils.getClass(k, true).getDeclaredConstructor().newInstance();
if (obj instanceof EncryptionJwtSigningJwtCryptographyProperties) {
final EncryptionJwtSigningJwtCryptographyProperties crypto = (EncryptionJwtSigningJwtCryptographyProperties) obj;
LOGGER.info(cryptoGroup.concat(".encryption.key=" + EncodingUtils.generateJsonWebKey(crypto.getEncryption().getKeySize())));
LOGGER.info(cryptoGroup.concat(".signing.key=" + EncodingUtils.generateJsonWebKey(crypto.getSigning().getKeySize())));
} else if (obj instanceof EncryptionRandomizedSigningJwtCryptographyProperties) {
final EncryptionRandomizedSigningJwtCryptographyProperties crypto = (EncryptionRandomizedSigningJwtCryptographyProperties) obj;
final String encKey = new Base64RandomStringGenerator(crypto.getEncryption().getKeySize()).getNewString();
LOGGER.info(cryptoGroup.concat(".encryption.key=" + encKey));
LOGGER.info(cryptoGroup.concat(".signing.key=" + EncodingUtils.generateJsonWebKey(crypto.getSigning().getKeySize())));
}
}));
});
}
use of org.apereo.cas.metadata.CasConfigurationMetadataRepository in project cas by apereo.
the class FindPropertiesCommand method find.
/**
* Find.
*
* @param strict the strict
* @param propertyPattern the property pattern
* @return the map
*/
public Map<String, ConfigurationMetadataProperty> find(final boolean strict, final Pattern propertyPattern) {
val results = new HashMap<String, ConfigurationMetadataProperty>();
val repository = new CasConfigurationMetadataRepository();
val props = repository.getRepository().getAllProperties();
props.forEach((k, v) -> {
val matched = StreamSupport.stream(RelaxedPropertyNames.forCamelCase(k).spliterator(), false).map(Object::toString).anyMatch(name -> strict ? RegexUtils.matches(propertyPattern, name) : RegexUtils.find(propertyPattern, name));
if (matched) {
results.put(k, v);
}
});
return results;
}
use of org.apereo.cas.metadata.CasConfigurationMetadataRepository in project cas by apereo.
the class CasConfigurationMetadataServerEndpointTests method verifyOperation.
@Test
public void verifyOperation() {
val repository = new CasConfigurationMetadataRepository();
val endpoint = new CasConfigurationMetadataServerEndpoint(casProperties, repository);
val result = endpoint.properties();
assertNotNull(result);
assertFalse(result.isEmpty());
val results = endpoint.search("server.port");
assertNotNull(results);
assertFalse(results.isEmpty());
}
use of org.apereo.cas.metadata.CasConfigurationMetadataRepository in project cas by apereo.
the class ConfigurationMetadataSearchResultTests method verifyAction.
@Test
public void verifyAction() {
val repository = new CasConfigurationMetadataRepository();
val properties = repository.getRepository().getAllProperties();
val prop = properties.get("server.port");
assertNotNull(prop);
val r = new ConfigurationMetadataSearchResult(prop, repository);
assertEquals(prop.getDefaultValue(), r.getDefaultValue());
assertEquals(prop.getId(), r.getId());
assertEquals(prop.getName(), r.getName());
assertEquals(prop.getType(), r.getType());
assertEquals(prop.getShortDescription(), r.getShortDescription());
assertEquals(prop.getDescription(), r.getDescription());
assertEquals(prop.getDefaultValue(), r.getDefaultValue());
assertNotNull(r.getGroup());
}
use of org.apereo.cas.metadata.CasConfigurationMetadataRepository in project cas by apereo.
the class FindPropertiesCommand method find.
/**
* Find.
*
* @param strict the strict
* @param propertyPattern the property pattern
* @return the map
*/
public Map<String, ConfigurationMetadataProperty> find(final boolean strict, final Pattern propertyPattern) {
final Map<String, ConfigurationMetadataProperty> results = new LinkedHashMap<>();
final CasConfigurationMetadataRepository repository = new CasConfigurationMetadataRepository();
final Map<String, ConfigurationMetadataProperty> props = repository.getRepository().getAllProperties();
props.forEach((k, v) -> {
final boolean matched = StreamSupport.stream(RelaxedNames.forCamelCase(k).spliterator(), false).map(Object::toString).anyMatch(name -> strict ? RegexUtils.matches(propertyPattern, name) : RegexUtils.find(propertyPattern, name));
if (matched) {
results.put(k, v);
}
});
return results;
}
Aggregations