尽管我设置了username
,password
,action
和WS Security Password Type (which is PasswordText)
,但在尝试调用Web服务的服务时会收到此异常:{{ 1}}。我尝试通信的Web服务使用No security action was defined
使用Basic Authentication
WS安全密码类型。
以下是我的尝试:
PasswordText
为了定义安全措施,还需要配置什么?
P.S。使用 Map<String, Object> ctx = ((BindingProvider) basicHttpBindingIDeneme).getRequestContext();
ctx.put("ws-security.username", USERNAME);
ctx.put("ws-security.password", PASSWORD);
Map<String,Object> inProps = new HashMap<String,Object>();
inProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
inProps.put(WSHandlerConstants.ACTION, "UsernameToken");
WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps);
org.apache.cxf.endpoint.Client client = ClientProxy.getClient(basicHttpBindingIDeneme);
org.apache.cxf.endpoint.Endpoint cxfEndpoint = client.getEndpoint();
cxfEndpoint.getInInterceptors().add(wssIn);
Map<String,Object> outProps = new HashMap<String,Object>();
// how to configure the properties is outlined below;
WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
cxfEndpoint.getOutInterceptors().add(wssOut);
这是可用的最新版本。
答案 0 :(得分:0)
您是否将安全拦截器添加到bean.xml?
<bean id="securityInterceptor" class="...BasicAuthAuthorizationInterceptor">
</bean>
<jaxrs:server id="..." address="/">
<jaxrs:serviceBeans>
<ref bean="bean" />
</jaxrs:serviceBeans>
<jaxrs:inInterceptors>
<ref bean="securityInterceptor" />
</jaxrs:inInterceptors>
</jaxrs:server>
答案 1 :(得分:0)
代码中的问题是您正在尝试调用Web服务,并且您添加的属性将在WSS4JInInterceptor中设置,而不是在WSS4JOutInterceptor中设置它们。
属性的定义应与此类似。
Because
您可以找到完整的代码示例here。