0 0

WSS4J 密码验证错误处理捕获异常0

我使用用 CXF和WSS4J搭建的一个WebService框架,发布和应用都是正常的,但是在处理客户端床送的WSS4J错误密码时就抛异常,我是故意将客户端发送的密码写错,然后客户端验证密码错误,就抛一个异常,这个异常我都不知道应该在哪捕获和如何告知客户段密码验证错误。
代码片段如下

密码验证处理的类
public class ServerPasswordCallback implements CallbackHandler {

Logger logger = Logger.getLogger(ServerPasswordCallback.class);
@Override
public void handle(Callback[] callbacks){
try {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
// 标识符
String identifier = pc.getIdentifier();
if (identifier != null && identifier.equals("admin")) {
pc.setPassword("12345");//客户端传送的是123456789
} else {
logger.info("未授权的用户");
}
} catch (Exception e) {
System.out.println("服务端密码验证错误……");//这里捕获不到抛出来的异常
}
}
}

密码验证错误就抛异常:
org.apache.ws.security.WSSecurityException: The security token could not be authenticated or authorized
at org.apache.ws.security.validate.UsernameTokenValidator.verifyDigestPassword(UsernameTokenValidator.java:203)
at org.apache.ws.security.validate.UsernameTokenValidator.verifyPlaintextPassword(UsernameTokenValidator.java:142)
at org.apache.ws.security.validate.UsernameTokenValidator.validate(UsernameTokenValidator.java:100)
at org.apache.ws.security.processor.UsernameTokenProcessor.handleUsernameToken(UsernameTokenProcessor.java:172)
at org.apache.ws.security.processor.UsernameTokenProcessor.handleToken(UsernameTokenProcessor.java:67)
at org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:396)
at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:279)
at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:95)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:159)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:722)
这个异常我也不知道怎么捕获,也不知道怎么通知客户端密码错误,

这里抛异常也就没有执行我的服务端方法
@Override
public String sayHello(String name) {
return "Hello " + name + " ^_^ !";
}
2013年9月08日 15:35

1个答案 按时间排序 按投票排序

0 0

看情况应该是在WebService端异常被捕获后未抛出,可以去看下WebService端抛出异常是否可设置,若不可设置只能改源码了

2013年12月05日 15:41

相关推荐

    xfire验证签名加密详细

    4. **异常处理**:如果安全验证失败,XFire会抛出异常,客户端和服务端都需要有适当的错误处理机制来捕获和处理这些异常。 在实际应用中,我们可能还需要考虑性能和安全性之间的平衡,例如调整加密算法的强度,或者...

    wss-agent-api-client-2.0.0.zip

    - 错误处理:对可能出现的网络异常、API错误等情况进行捕获和处理,提供友好的错误信息。 使用`qiitascala`,开发者可以轻松地在 Scala 应用中集成 Qiita 功能,无论是为了自动化数据抓取、分析,还是为了开发基于 ...

    WebSocket C#服务端Demo+测试

    5. 错误处理:`OnError`方法捕获并处理可能出现的异常。 客户端测试页面`a.html`和`b.html`可能使用JavaScript的WebSocket API来与服务端通信。它们会创建WebSocket对象,指定服务端的URL,然后监听`open`、`...

    java开源包4

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    websocket群发和指定用户发

    4. 错误处理:设计良好的错误处理机制,如超时重试、异常捕获。 5. 性能优化:对大量并发连接进行优化,例如使用负载均衡器和集群。 总的来说,WebSocket为构建实时、双向通信的应用提供了强大的支持。无论是群发...

    java开源包1

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包11

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包2

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包3

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包6

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包5

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包10

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包8

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包7

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包9

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    Html5 WebSocket c++ 握手 库

    4. **错误处理**:捕获和处理握手失败、网络中断等异常情况。 5. **安全性支持**:可能包含对WSS(WebSocket over SSL/TLS)的支持,以确保通信安全。 在实际应用中,开发人员可能会用这个库来创建实时游戏服务器、...

    java开源包101

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    Java资源包01

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    海康视频流前端播放使用(vue版本ws通信)

    4. **错误处理和断线重连**: - 在`onerror`和`onclose`事件中,应捕获异常并处理,例如显示错误信息或尝试重新连接。 - 断线重连策略可以是简单的定时重试,也可以根据网络状况动态调整。 5. **优化性能**: - ...

    java前台用html5 websocket 后台用netty实现聊天系统.rar

    9. **异常处理**:对可能出现的网络错误和应用程序错误进行捕获并处理,保证系统稳定性。 此外,为了确保系统的健壮性和安全性,还需要考虑如身份验证、权限控制、心跳检测、负载均衡、错误重试等高级特性。总的来...

Global site tag (gtag.js) - Google Analytics