繁体   English   中英

骆驼CXF-安全(身份验证)

[英]Camel CXF - Security (Authentication)

我使用CXF组件作为波纹管,使用apache骆驼创建了一个Web服务:

blueprint.xml:

  <bean class="ngtrend.ws.Testws"/>
  <!-- Defined the server endpoint to create the cxf-rs consumer -->
  <cxf:rsServer id="rsServer" address="http://localhost:9050/route"
    serviceClass="ngtrend.ws.Testws"     />
  <camelContext xmlns="http://camel.apache.org/schema/blueprint">
    <route id="timerToLog">
      <from uri="cxfrs://bean://rsServer"/>
      <to uri="bean:ngtrend.ws.HelloBean?method=test(Exchange)"/>
      <log message="${body}"/>
    </route>
  </camelContext>

Testws.java:

public class Testws {
    @GET
    @Path("/test/{id}")
    @Produces("application/xml")
    //@Consumes("text/xml")
    public Integer getAssets(@PathParam("id") int id){
        return null;
    }
}

并且我想确保它的安全,从而迫使客户发送(如果使用浏览器,则在对话框上输入)登录名和密码(BASIC Http身份验证)。 我该如何进行配置?

在CXF框架中,可以使用以下方法完成静态服务认证:

<cxf:rsServer id="rsServer" 
              address="http://localhost:9050/route">

    <jaxrs:serviceBeans>
                 <ref bean="serviceBean"/>
        </jaxrs:serviceBeans>

        <jaxrs:providers>
            <ref bean="authenticationHandler"/>
        </jaxrs:providers>  

</cxf:server>


<bean id="serviceBean" class="ngtrend.ws.Testws"/>

<bean id="authenticationHandler" class="yourpackage.Class" />

为authenticationHandler创建自己的处理程序,该处理程序将实现import org.apache.cxf.jaxrs.ext.RequestHandler 使用此类中需要的身份验证策略,例如针对数据库进行身份验证等。这应允许进行基本身份验证。

您可以编写一个实现ContainerRequestFilter的类。 然后在cxf:providers中进行设置,如下所示:

<bean id="authenticationHandler" class="a class which implements ContainerRequestFilter" />
<cxf:rsServer id="xxxRsServer"
    address="/xxxservice" serviceClass="xxx.XXXService"
    loggingFeatureEnabled="true" loggingSizeLimit="20">
    <cxf:providers>
        <ref component-id="authenticationHandler"/>
    </cxf:providers>
</cxf:rsServer>

这样,您可以覆盖以下方法

public void filter(ContainerRequestContext requestContext)

例如,您可以基于requestContext.getHeaderString(“ UserPassInfo”)进行简单的身份验证。 如果成功,则不执行任何操作,否则调用requestContext.abortWith(Response.status(401).header(“ WWW-Authenticate”,“ Basic”)。build());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM