首页 > 解决方案 > 不满足的依赖主体

问题描述

我正在尝试为授权/身份验证实现 quarkus 扩展。我以现有的quarkus-smallrye-jwt-abx-extension 为例。一切似乎都很好,除了我不能注入Principal

    @Inject
    private Principal principal;

我越来越

类型 java.security.Principal 和限定符 [@Default] 的不满足依赖性

注入SecurityContextPrincipal从中获取工作正常:

    @Context
    private SecurityContext sec;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Path("test")
    public String test() {
        return sec.getUserPrincipal().getName();
    }

quarkus-smallrye-jwt-abx-extension 中,有一个PrincipalProducer,它似乎产生了Principal. 这真的有必要吗?这不是安全子系统本身提供的吗?它还提供SecurityContext;为什么不应该提供Principal

标签: javasecurityauthenticationjax-rsquarkus

解决方案


这是当前 resteasy / CDI 集成中的一个错误,因为我们没有提供基于 JAX-RS SecurityContext 的默认值。quarkus-smallrye-jwt 扩展提供了一个 PrincipalProducer 来覆盖默认值,因为它安装了一个作为 java.security.Principal 子接口的 Principal。当前的解决方法是提供您自己的主要生产者。

有一个错误报告: https ://github.com/quarkusio/quarkus/issues/2528


推荐阅读