首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许quarkus-oidc自定义403响应正文

允许quarkus-oidc自定义403响应正文
EN

Stack Overflow用户
提问于 2021-11-17 09:29:03
回答 1查看 87关注 0票数 1

我想在quarkus oidc应用程序中自定义403/401的响应正文。我已经尝试了很多方法来实现它,但都不能实现。同样的事情也可以在Spring boot中轻松实现。

EN

回答 1

Stack Overflow用户

发布于 2021-11-17 20:04:36

使用声明性安全(@RolesAllowed@Authenticated...)身份验证违规错误作为安全扩展抛出的异常处理,然后使用标准JAXRS exception mapping机制映射这些异常。

这意味着,要修改这些错误的响应,唯一需要做的就是为您想要的特定异常创建一个异常映射器。在Quarkus安全中,相关的例外是:分别针对403401错误的io.quarkus.security.ForbiddenExceptionio.quarkus.security.UnauthorizedException

403/禁止错误的示例映射器:

代码语言:javascript
复制
import io.quarkus.security.ForbiddenException;

import javax.annotation.Priority;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;

@Provider//register as JAXRS provider
@Priority(1)//override the build-int mapper(which has 5001 prio)
public class ForbiddenExceptionMapper implements ExceptionMapper<ForbiddenException> {
  @Override
  public Response toResponse(ForbiddenException exception) {
    return Response.status(Response.Status.FORBIDDEN)
      .entity(new MyErrorObject("ERR_NO_ACCESS","Sorry access forbidden"))
      .build();
  }
}

请注意,您的异常映射器需要具有正确的PRIO值(该值越低,优先级越高),因为Quarkus已经为这些异常捆绑了映射器(在quarkus-resteasy扩展内),因此您需要提供具有更高优先级的映射器来覆盖它们。这些内置映射器实际上负责您看到的401/403响应。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70001847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档