Quarkus自定义授权拦截器

第一

我有一个Quarkus微服务,使用quarkus-oidc和quarkus-keycloak-authorization扩展与Keycloak进行身份验证和授权。

我需要另外实现以下两个请求拦截器/过滤器:

  1. 任何身份验证逻辑开始之前的过滤器。这是将令牌从查询参数复制到标头(对于Web套接字是必需的)。此过滤器的优先级应该是什么?
  2. 具有自定义授权逻辑的过滤器。这应该在所有身份验证和密钥转换授权逻辑之后但在API执行之前执行吗?此过滤器的优先级应该是什么?

我尝试将@Priority(Interceptor.Priority.PLATFORM_BEFORE)和@Prematching也放到我的过滤器中,但是即使在OIDC启动后也被调用。

另外,有什么方法可以支持扩展quarkus oidc逻辑以包含自定义代码吗?

我无法获得oidc和keycloak-auth拦截器的优先级(知道这些可以帮助我确定过滤器的优先级)。请帮忙。

第一

从quarkus Google网上论坛获得了答案。

对于#2,可以使用具有任何优先级(不应为@Prematching)的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);
    }

}

对于#1,我们可以使用Vertx @RouteFilter

样本过滤器:
只需注意优先级即可。优先级越高,首先将被调用。

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(); 
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为某些动作添加自定义拦截器

来自分类Dev

如何获取从拦截器传递到自定义验证器的数据?

来自分类Dev

Grails 3拦截器并呈现自定义JSON视图

来自分类Dev

Struts 2中具有bean值的自定义日志记录拦截器

来自分类Dev

angularJS:自定义404拦截器句柄-带有url的响应

来自分类Dev

为什么我的自定义拦截器不起作用?

来自分类Dev

处理Kotlin Coroutines中的自定义okhttp拦截器引发的异常

来自分类Dev

JSP文件中的拦截器,图块,注释和自定义包含

来自分类Dev

Grails 3拦截器并呈现自定义JSON视图

来自分类Dev

为什么我的AngularJS自定义拦截器不起作用

来自分类Dev

ws:outbound-gateway自定义拦截器,带有消息头

来自分类Dev

带有拦截器的AngularJS自定义标头

来自分类Dev

使用提供程序在拦截器中传递自定义参数

来自分类Dev

Tomcat自定义错误处理程序未捕获Spring MVC拦截器错误响应

来自分类Dev

Tomcat自定义错误处理程序未捕获Spring MVC拦截器错误响应

来自分类Dev

如何在struts2中为自定义拦截器添加excludeMethods参数列表

来自分类Dev

让授权拦截器不拦截对凭证端点的请求

来自分类Dev

Kafka 自定义授权器

来自分类Dev

如何防止广告拦截器杀死使用google.script.host.close()的Google Apps脚本自定义对话框中的链接

来自分类Dev

angularjs httpprovider拦截器无法访问自定义http响应标头(CORS请求)的原因是什么?

来自分类Dev

WCF自定义授权

来自分类Dev

jBPM自定义授权

来自分类Dev

自定义授权策略

来自分类Dev

未在NextJS中使用axios拦截器定义localStorage

来自分类Dev

使用struts2注释定义拦截器

来自分类Dev

使用自定义main方法的Quarkus

来自分类Dev

使用拦截器和注入在JAX-RS中进行身份验证/授权

来自分类Dev

在拦截器中设置JWT授权标头不起作用

来自分类Dev

EJB拦截器与CDI拦截器

Related 相关文章

  1. 1

    为某些动作添加自定义拦截器

  2. 2

    如何获取从拦截器传递到自定义验证器的数据?

  3. 3

    Grails 3拦截器并呈现自定义JSON视图

  4. 4

    Struts 2中具有bean值的自定义日志记录拦截器

  5. 5

    angularJS:自定义404拦截器句柄-带有url的响应

  6. 6

    为什么我的自定义拦截器不起作用?

  7. 7

    处理Kotlin Coroutines中的自定义okhttp拦截器引发的异常

  8. 8

    JSP文件中的拦截器,图块,注释和自定义包含

  9. 9

    Grails 3拦截器并呈现自定义JSON视图

  10. 10

    为什么我的AngularJS自定义拦截器不起作用

  11. 11

    ws:outbound-gateway自定义拦截器,带有消息头

  12. 12

    带有拦截器的AngularJS自定义标头

  13. 13

    使用提供程序在拦截器中传递自定义参数

  14. 14

    Tomcat自定义错误处理程序未捕获Spring MVC拦截器错误响应

  15. 15

    Tomcat自定义错误处理程序未捕获Spring MVC拦截器错误响应

  16. 16

    如何在struts2中为自定义拦截器添加excludeMethods参数列表

  17. 17

    让授权拦截器不拦截对凭证端点的请求

  18. 18

    Kafka 自定义授权器

  19. 19

    如何防止广告拦截器杀死使用google.script.host.close()的Google Apps脚本自定义对话框中的链接

  20. 20

    angularjs httpprovider拦截器无法访问自定义http响应标头(CORS请求)的原因是什么?

  21. 21

    WCF自定义授权

  22. 22

    jBPM自定义授权

  23. 23

    自定义授权策略

  24. 24

    未在NextJS中使用axios拦截器定义localStorage

  25. 25

    使用struts2注释定义拦截器

  26. 26

    使用自定义main方法的Quarkus

  27. 27

    使用拦截器和注入在JAX-RS中进行身份验证/授权

  28. 28

    在拦截器中设置JWT授权标头不起作用

  29. 29

    EJB拦截器与CDI拦截器

热门标签

归档