Skip to content

Commit

Permalink
Merge pull request quarkusio#18702 from stuartwdouglas/oidc-reactive
Browse files Browse the repository at this point in the history
Remove blocking code from OIDC
  • Loading branch information
gsmet authored Jul 15, 2021
2 parents d2f27df + 07f2966 commit 81530a5
Show file tree
Hide file tree
Showing 5 changed files with 5 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import io.quarkus.oidc.SecurityEvent;
import io.quarkus.oidc.common.runtime.OidcCommonUtils;
import io.quarkus.oidc.common.runtime.OidcConstants;
import io.quarkus.runtime.BlockingOperationControl;
import io.quarkus.security.AuthenticationCompletionException;
import io.quarkus.security.AuthenticationFailedException;
import io.quarkus.security.AuthenticationRedirectException;
Expand Down Expand Up @@ -546,13 +545,7 @@ public Throwable apply(Throwable tInner) {
}

private Uni<AuthorizationCodeTokens> refreshTokensUni(TenantConfigContext configContext, String refreshToken) {

return configContext.provider.refreshTokens(refreshToken).plug(u -> {
if (!BlockingOperationControl.isBlockingAllowed()) {
return u.runSubscriptionOn(resolver.getBlockingExecutor());
}
return u;
});
return configContext.provider.refreshTokens(refreshToken);
}

private Uni<AuthorizationCodeTokens> getCodeFlowTokensUni(RoutingContext context, TenantConfigContext configContext,
Expand All @@ -563,12 +556,7 @@ private Uni<AuthorizationCodeTokens> getCodeFlowTokensUni(RoutingContext context
String redirectUriParam = buildUri(context, isForceHttps(configContext), redirectPath);
LOG.debugf("Token request redirect_uri parameter: %s", redirectUriParam);

return configContext.provider.getCodeFlowTokens(code, redirectUriParam).plug(u -> {
if (!BlockingOperationControl.isBlockingAllowed()) {
return u.runSubscriptionOn(resolver.getBlockingExecutor());
}
return u;
});
return configContext.provider.getCodeFlowTokens(code, redirectUriParam);
}

private String buildLogoutRedirectUri(TenantConfigContext configContext, String idToken, RoutingContext context) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package io.quarkus.oidc.runtime;

import java.util.concurrent.Executor;

import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Event;
Expand Down Expand Up @@ -179,7 +177,4 @@ boolean isEnableHttpForwardedPrefix() {
return enableHttpForwardedPrefix;
}

public Executor getBlockingExecutor() {
return tenantConfigBean.getBlockingExecutor();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import io.quarkus.oidc.OidcTenantConfig.Roles.Source;
import io.quarkus.oidc.OidcTokenCredential;
import io.quarkus.oidc.common.runtime.OidcConstants;
import io.quarkus.runtime.BlockingOperationControl;
import io.quarkus.security.AuthenticationFailedException;
import io.quarkus.security.credential.TokenCredential;
import io.quarkus.security.identity.AuthenticationRequestContext;
Expand Down Expand Up @@ -283,14 +282,7 @@ private Uni<TokenVerificationResult> refreshJwksAndVerifyTokenUni(TenantConfigCo
}

private Uni<TokenVerificationResult> introspectTokenUni(TenantConfigContext resolvedContext, String token) {
// remote introspection is required, a blocking call

return resolvedContext.provider.introspectToken(token).plug(u -> {
if (!BlockingOperationControl.isBlockingAllowed()) {
return u.runSubscriptionOn(tenantResolver.getBlockingExecutor());
}
return u;
});
return resolvedContext.provider.introspectToken(token);
}

private static Uni<SecurityIdentity> validateTokenWithoutOidcServer(TokenAuthenticationRequest request,
Expand All @@ -309,11 +301,7 @@ private static Uni<SecurityIdentity> validateTokenWithoutOidcServer(TokenAuthent
private Uni<JsonObject> getUserInfoUni(RoutingContext vertxContext, TokenAuthenticationRequest request,
TenantConfigContext resolvedContext) {
if (resolvedContext.oidcConfig.authentication.isUserInfoRequired()) {
if (BlockingOperationControl.isBlockingAllowed()) {
return resolvedContext.provider.getUserInfo(vertxContext, request);
}
return resolvedContext.provider.getUserInfo(vertxContext, request)
.runSubscriptionOn(tenantResolver.getBlockingExecutor());
return resolvedContext.provider.getUserInfo(vertxContext, request);
} else {
return NULL_USER_INFO_UNI;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import io.quarkus.oidc.OidcTenantConfig.TokenStateManager.Strategy;
import io.quarkus.oidc.common.runtime.OidcCommonConfig;
import io.quarkus.oidc.common.runtime.OidcCommonUtils;
import io.quarkus.runtime.BlockingOperationControl;
import io.quarkus.runtime.ExecutorRecorder;
import io.quarkus.runtime.LaunchMode;
import io.quarkus.runtime.TlsConfig;
Expand Down Expand Up @@ -60,13 +59,7 @@ public TenantConfigBean get() {
new Function<OidcTenantConfig, Uni<TenantConfigContext>>() {
@Override
public Uni<TenantConfigContext> apply(OidcTenantConfig config) {
return createDynamicTenantContext(vertxValue, config, tlsConfig, config.getTenantId().get())
.plug(u -> {
if (!BlockingOperationControl.isBlockingAllowed()) {
return u.runSubscriptionOn(ExecutorRecorder.getCurrent());
}
return u;
});
return createDynamicTenantContext(vertxValue, config, tlsConfig, config.getTenantId().get());
}
},
ExecutorRecorder.getCurrent());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ public class TenantConfigBean {
private final Map<String, TenantConfigContext> dynamicTenantsConfig;
private final TenantConfigContext defaultTenant;
private final Function<OidcTenantConfig, Uni<TenantConfigContext>> tenantConfigContextFactory;
private final Executor blockingExecutor;

public TenantConfigBean(
Map<String, TenantConfigContext> staticTenantsConfig,
Expand All @@ -25,7 +24,6 @@ public TenantConfigBean(
this.dynamicTenantsConfig = dynamicTenantsConfig;
this.defaultTenant = defaultTenant;
this.tenantConfigContextFactory = tenantConfigContextFactory;
this.blockingExecutor = blockingExecutor;
}

public Map<String, TenantConfigContext> getStaticTenantsConfig() {
Expand All @@ -43,8 +41,4 @@ public Function<OidcTenantConfig, Uni<TenantConfigContext>> getTenantConfigConte
public Map<String, TenantConfigContext> getDynamicTenantsConfig() {
return dynamicTenantsConfig;
}

public Executor getBlockingExecutor() {
return blockingExecutor;
}
}

0 comments on commit 81530a5

Please sign in to comment.