use of javax.enterprise.inject.spi.DeploymentException in project Payara by payara.
the class JwtPrivateKeyStore method createPrivateKeyFromJWKS.
private PrivateKey createPrivateKeyFromJWKS(String jwksValue, String keyId) throws Exception {
JsonObject jwks = JwtKeyStoreUtils.parseJwks(jwksValue);
JsonArray keys = jwks.getJsonArray("keys");
JsonObject jwk = keys != null ? JwtKeyStoreUtils.findJwk(keys, keyId) : jwks;
// Check if an RSA or ECDSA key needs to be created
String kty = jwk.getString("kty");
if (kty == null) {
throw new DeploymentException("Could not determine key type - kty field not present");
}
if (kty.equals("RSA")) {
// The modulus
byte[] modulusBytes = Base64.getUrlDecoder().decode(jwk.getString("n"));
BigInteger modulus = new BigInteger(1, modulusBytes);
// The private exponent
byte[] exponentBytes = Base64.getUrlDecoder().decode(jwk.getString("d"));
BigInteger exponent = new BigInteger(1, exponentBytes);
RSAPrivateKeySpec privateKeySpec = new RSAPrivateKeySpec(modulus, exponent);
return KeyFactory.getInstance("RSA").generatePrivate(privateKeySpec);
} else {
throw new DeploymentException("Could not determine key type - JWKS kty field does not equal RSA or EC");
}
}
use of javax.enterprise.inject.spi.DeploymentException in project tomee by apache.
the class ThreadSingletonServiceImpl method initialize.
@Override
public void initialize(final StartupObject startupObject) {
if (lazyInit == null) {
// done here cause Cdibuilder trigger this class loading and that's from Warmup so we can't init too early config
synchronized (this) {
if (lazyInit == null) {
lazyInit = new Object();
cachedApplicationScoped = "true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.cdi.applicationScope.cached", "true").trim());
cachedRequestScoped = "true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.cdi.requestScope.cached", "true").trim());
cachedSessionScoped = "true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.cdi.sessionScope.cached", "true").trim());
}
}
}
final AppContext appContext = startupObject.getAppContext();
appContext.setCdiEnabled(hasBeans(startupObject.getAppInfo()));
// initialize owb context, cf geronimo's OpenWebBeansGBean
final Properties properties = new Properties();
properties.setProperty(OpenWebBeansConfiguration.APPLICATION_IS_JSP, "true");
properties.setProperty(OpenWebBeansConfiguration.USE_EJB_DISCOVERY, "true");
// from CDI builder
properties.setProperty(OpenWebBeansConfiguration.INTERCEPTOR_FORCE_NO_CHECKED_EXCEPTIONS, "false");
properties.setProperty(SecurityService.class.getName(), ManagedSecurityService.class.getName());
properties.setProperty(OpenWebBeansConfiguration.APPLICATION_SUPPORTS_CONVERSATION, "true");
properties.setProperty(OpenWebBeansConfiguration.IGNORED_INTERFACES, "org.apache.aries.proxy.weaving.WovenProxy");
final boolean tomee = SystemInstance.get().getProperty("openejb.loader", "foo").startsWith("tomcat");
final String defaultNormalScopeHandlerClass = NormalScopedBeanInterceptorHandler.class.getName();
properties.setProperty("org.apache.webbeans.proxy.mapping.javax.enterprise.context.ApplicationScoped", cachedApplicationScoped ? ApplicationScopedBeanInterceptorHandler.class.getName() : defaultNormalScopeHandlerClass);
properties.setProperty("org.apache.webbeans.proxy.mapping.javax.enterprise.context.RequestScoped", tomee && cachedRequestScoped ? RequestScopedBeanInterceptorHandler.class.getName() : defaultNormalScopeHandlerClass);
properties.setProperty("org.apache.webbeans.proxy.mapping.javax.enterprise.context.SessionScoped", tomee && cachedSessionScoped ? SessionScopedBeanInterceptorHandler.class.getName() : defaultNormalScopeHandlerClass);
properties.put(OpenWebBeansConfiguration.PRODUCER_INTERCEPTION_SUPPORT, SystemInstance.get().getProperty("openejb.cdi.producer.interception", "true"));
properties.putAll(appContext.getProperties());
// services needing WBC as constructor param
properties.put(ContextsService.class.getName(), CdiAppContextsService.class.getName());
properties.put(ResourceInjectionService.class.getName(), CdiResourceInjectionService.class.getName());
properties.put(TransactionService.class.getName(), OpenEJBTransactionService.class.getName());
properties.put("org.apache.webbeans.component.PrincipalBean.proxy", "false");
// like in ClassDefiner. We need to explicitly set the Proxy service
if (ClassDefiner.isClassLoaderDefineClass()) {
properties.setProperty(DefiningClassService.class.getName(), ClassDefiner.class.getName());
}
// NOTE: ensure user can extend/override all the services = set it only if not present in properties, see WebBeansContext#getService()
final Map<Class<?>, Object> services = new HashMap<>();
services.put(AppContext.class, appContext);
if (!properties.containsKey(Executor.class.getName())) {
services.put(Executor.class, new Executor() {
// lazy to create threads only for apps requiring it
private final AtomicReference<Executor> delegate = new AtomicReference<>();
@Override
public void execute(final Runnable command) {
Executor executor = delegate.get();
if (executor == null) {
synchronized (this) {
final Executor alreadyUpdated = delegate.get();
if (alreadyUpdated == null) {
executor = new ManagedExecutorServiceImpl(new ExecutorBuilder().size(3).threadFactory(new ManagedThreadFactoryImpl(appContext.getId() + "-cdi-fireasync-")).prefix("CDIAsyncPool").build(appContext.getOptions()));
delegate.compareAndSet(null, executor);
} else {
executor = alreadyUpdated;
}
}
}
executor.execute(command);
}
@Override
public String toString() {
return "CDIAsyncEventExecutor(app=" + appContext.getId() + ")";
}
});
}
if (!properties.containsKey(ApplicationBoundaryService.class.getName())) {
services.put(ApplicationBoundaryService.class, new DefaultApplicationBoundaryService());
}
if (!properties.containsKey(ScannerService.class.getName())) {
services.put(ScannerService.class, new CdiScanner());
}
if (!properties.containsKey(JNDIService.class.getName())) {
services.put(JNDIService.class, new OpenEJBJndiService());
}
if (!properties.containsKey(BeanArchiveService.class.getName())) {
services.put(BeanArchiveService.class, new OpenEJBBeanInfoService());
}
if (!properties.containsKey(ELAdaptor.class.getName())) {
try {
services.put(ELAdaptor.class, new CustomELAdapter(appContext));
} catch (final NoClassDefFoundError noClassDefFoundError) {
// no-op: no javax.el
}
}
if (!properties.containsKey(LoaderService.class.getName())) {
final LoaderService loaderService = SystemInstance.get().getComponent(LoaderService.class);
if (loaderService == null && !properties.containsKey(LoaderService.class.getName())) {
services.put(LoaderService.class, new OptimizedLoaderService(appContext.getProperties()));
} else if (loaderService != null) {
services.put(LoaderService.class, loaderService);
}
}
final ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
final ClassLoader cl;
if (oldClassLoader != ThreadSingletonServiceImpl.class.getClassLoader() && ThreadSingletonServiceImpl.class.getClassLoader() != oldClassLoader.getParent()) {
cl = new MultipleClassLoader(oldClassLoader, ThreadSingletonServiceImpl.class.getClassLoader());
} else {
cl = oldClassLoader;
}
Thread.currentThread().setContextClassLoader(cl);
final WebBeansContext webBeansContext;
Object old = null;
try {
if (startupObject.getWebContext() == null) {
webBeansContext = new WebBeansContext(services, properties);
appContext.set(WebBeansContext.class, webBeansContext);
} else {
webBeansContext = new WebappWebBeansContext(services, properties, appContext.getWebBeansContext());
startupObject.getWebContext().setWebbeansContext(webBeansContext);
}
// we want the same reference as the ContextsService if that's our impl
if (webBeansContext.getOpenWebBeansConfiguration().supportsConversation() && "org.apache.webbeans.jsf.DefaultConversationService".equals(webBeansContext.getOpenWebBeansConfiguration().getProperty(ConversationService.class.getName()))) {
webBeansContext.registerService(ConversationService.class, ConversationService.class.cast(webBeansContext.getService(ContextsService.class)));
}
final BeanManagerImpl beanManagerImpl = webBeansContext.getBeanManagerImpl();
beanManagerImpl.addContext(new TransactionContext());
webBeansContext.getInterceptorsManager().addInterceptorBindingType(Transactional.class);
SystemInstance.get().fireEvent(new WebBeansContextCreated(webBeansContext));
old = contextEntered(webBeansContext);
setConfiguration(webBeansContext.getOpenWebBeansConfiguration());
try {
webBeansContext.getService(ContainerLifecycle.class).startApplication(startupObject);
} catch (final Exception e) {
throw new DeploymentException("couldn't start owb context", e);
}
} finally {
contextExited(old);
Thread.currentThread().setContextClassLoader(oldClassLoader);
}
}
use of javax.enterprise.inject.spi.DeploymentException in project Payara by payara.
the class JwtAuthCdiExtension method checkInjectIntoRightScope.
public <T> void checkInjectIntoRightScope(@Observes ProcessInjectionTarget<T> eventIn, BeanManager beanManager) {
// JDK8 u60 workaround
ProcessInjectionTarget<T> event = eventIn;
for (InjectionPoint injectionPoint : event.getInjectionTarget().getInjectionPoints()) {
Claim claim = hasClaim(injectionPoint);
if (claim != null) {
// MP-JWT 1.0 7.1.3.
Bean<?> bean = injectionPoint.getBean();
Class<?> scope = bean != null ? injectionPoint.getBean().getScope() : null;
if (scope != null && scope.equals(SessionScoped.class)) {
throw new DeploymentException("Can't inject using qualifier " + Claim.class + " in a target with scope " + scope);
}
if (!claim.value().equals("") && claim.standard() != UNKNOWN && !claim.value().equals(claim.standard().name())) {
throw new DeploymentException("Claim value " + claim.value() + " should be equal to claim standard " + claim.standard().name() + " or one of those should be left at their default value");
}
}
}
}
use of javax.enterprise.inject.spi.DeploymentException in project wildfly-swarm by wildfly-swarm.
the class JWTAuthContextInfoProvider method getOptionalContextInfo.
@Produces
Optional<JWTAuthContextInfo> getOptionalContextInfo() {
if (!publicKeyPemEnc.isPresent()) {
return Optional.empty();
}
JWTAuthContextInfo contextInfo = new JWTAuthContextInfo();
try {
RSAPublicKey pk = (RSAPublicKey) KeyUtils.decodePublicKey(publicKeyPemEnc.get());
contextInfo.setSignerKey(pk);
} catch (Exception e) {
throw new DeploymentException(e);
}
if (issuedBy != null && !issuedBy.equals("NONE")) {
contextInfo.setIssuedBy(issuedBy);
}
if (expGracePeriodSecs.isPresent()) {
contextInfo.setExpGracePeriodSecs(expGracePeriodSecs.get());
}
return Optional.of(contextInfo);
}
Aggregations