Authorization Quarkus自定义授权拦截器
我有一个Quarkus微服务使用Quarkus oidc和Quarkus KeyClope授权扩展使用KeyClope进行身份验证和授权 我还需要实现以下两个请求拦截器/过滤器:Authorization Quarkus自定义授权拦截器,authorization,openid-connect,interceptor,quarkus,requestfiltering,Authorization,Openid Connect,Interceptor,Quarkus,Requestfiltering,我有一个Quarkus微服务使用Quarkus oidc和Quarkus KeyClope授权扩展使用KeyClope进行身份验证和授权 我还需要实现以下两个请求拦截器/过滤器: 任何身份验证逻辑启动之前的筛选器。这是将令牌从查询参数复制到标头(web套接字需要)。此筛选器的优先级应该是什么 具有自定义授权逻辑的筛选器。这应该在所有身份验证和keydapore授权逻辑之后执行,但就在API执行之前?这个过滤器的优先级应该是什么 我尝试将@Priority(之前是Interceptor.Prior
我无法获得oidc和KeyClope auth拦截器的优先级(知道这些可以帮助我决定过滤器的优先级)。请帮助。从quarkus谷歌小组获得了答案 对于#2,具有任何优先级(不应为@prematch)的ContainerRequestFilter将达到此目的。
另一种选择是定制HttpSecurityPolicy。这将在身份验证后调用
package org.acme.security.keycloak.authorization;
import javax.enterprise.context.ApplicationScoped;
import org.jboss.logging.Logger;
import io.quarkus.security.identity.SecurityIdentity;
import io.smallrye.mutiny.Uni;
import io.vertx.ext.web.RoutingContext;
@ApplicationScoped
public class SecurityHandler implements io.quarkus.vertx.http.runtime.security.HttpSecurityPolicy
{
@Override
public Uni<CheckResult> checkPermission(RoutingContext request, Uni<SecurityIdentity> identity, AuthorizationRequestContext requestContext)
{
Logger.getLogger(LoggingFilter.class).infof("================ custom permission");
return Uni.createFrom().item(CheckResult.PERMIT);
}
}
package org.acme.security.keycloak.authorization;
import io.quarkus.vertx.web.RouteFilter;
import io.vertx.ext.web.RoutingContext;
public class WSAuthFilter
{
@RouteFilter(1000)
void myFilter(RoutingContext rc) {
rc.request().headers().add("Authorization", rc.request().query());
rc.next();
}
}