如何将 PAX CDI 与声明式服务一起使用

How to use PAX CDI with Declarative service

我们正在使用 CXF + DOSGI 休息服务

接口:

@Path("/") 
public interface DefaultApi{ 
 @POST 
    @Path("/public/login") 
    @Consumes({ "application/json" }) 
    @Produces({ "application/json" }) 
    public Response login(@HeaderParam("User-Agent") String userAgent,@QueryParam("username") String username,@QueryParam("password") String password, 
                     @Context UriInfo uriInfo, 
                     @Context ResourceContext recourceContext); 

实施:

@Component(immediate = true, configurationPolicy = ConfigurationPolicy.REQUIRE, configurationPid = "frontend.rest") 
public class DefaultApiImpl implements DefaultApi { 

是否可以将 Apache Deltaspike 与 CXF + DOSGI 一起用于方法级授权 https://deltaspike.apache.org/documentation/security.html 如果可能怎么办?

有没有其他方法可以使用 CXF + DOSGI 进行方法级授权

您不能混合使用 deltaspike 和声明式服务。 Deltaspike security 是一个 cdi 扩展,因此您需要使用 pax cdi 来公开您的 OSGi 服务。

另一件事是您需要以某种方式进行身份验证。我建议使用 CXF JAASAuthenticationFeature。它可以对 karaf 中配置的 jaas 提供程序进行基本身份验证。结果是一个 jaas 登录,您可能可以在 deltaspike 安全中使用它来作为您的授权基础。