WebService com Certificação digital

Galera, preciso fazer um webService com autenticação utilizando certificado digital

tentei de cara, um artigo que encontrei na Mundo Java, que utiliza o CXF + WSS4J …

fazer o webservice com o CXF foi facil, mas não consegui nem criar uma autenticação simples com usuário e senha…

blza…

parti para outra e tentei utilizando o axis (esse eu já conhecia de outros tempos), tentei também utilizando o wss4j.

aparentemente ele cria o webservice que necessida de autenticação, mas ele nem entra no metodo de autenticação falando que o webservice precisa ter uma autenticação (legal, eu passei as informações para autenticar, e nada)

org.apache.ws.security.WSSecurityException: The security token could not be authenticated or authorized at org.apache.ws.security.processor.UsernameTokenProcessor.handleUsernameToken(UsernameTokenProcessor.java:139) at org.apache.ws.security.processor.UsernameTokenProcessor.handleToken(UsernameTokenProcessor.java:53) at org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:311) at org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:228) at org.apache.ws.axis.security.WSDoAllReceiver.invoke(WSDoAllReceiver.java:159) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619)

estou com uma certa urgencia disso, será que alguem já trabalho com webservice autenticado com certificado digital (WS-Security) e poderia me dar o caminho das pedras?

passei hoje o dia todo no google e não achei nada que realmente funcionasse.

Grato

  1. Estou estudando WebServices, poderia me dizer qual é a revista Mundo Java que tem este artigo, não que eu não queira procurar, porém a biblioteca que eu tenho acesso não disponibiliza um índice de cada uma das revistas, e como muitas estão locadas…

  2. Você está utilizando o JBoss?
    2.1 Você fez a configuração de usuário e senha com “JBossWS” no arquivo props/jbossws-users.properties?
    2.1.1 Se você fez, o usuário e senha devem ser setados antes de invocar o método

[code] public int calcValue(int arg0) throws java.rmi.RemoteException {
if (super.cachedEndpoint == null) {
throw new org.apache.axis.NoEndPointException();
}
org.apache.axis.client.Call _call = createCall();
_call.setOperation(_operations[0]);

//setar usuário e senha aqui
_call.setUsername("username");
_call.setPassword("password");

_call.setUseSOAPAction(true);
_call.setSOAPActionURI("");
_call.setEncodingStyle(null);
_call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR,
	Boolean.FALSE);
_call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS,
	Boolean.FALSE);
_call
	.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
_call.setOperationName(new javax.xml.namespace.QName("HelloService",
	"calcValue"));

    setRequestHeaders(_call);
    setAttachments(_call);
try {
    java.lang.Object _resp = _call
	    .invoke(new java.lang.Object[] { new java.lang.Integer(arg0) });
    if (_resp instanceof java.rmi.RemoteException) {
	throw (java.rmi.RemoteException) _resp;
    } else {
	extractAttachments(_call);
	try {
	    return ((java.lang.Integer) _resp).intValue();
	} catch (java.lang.Exception _exception) {
	    return ((java.lang.Integer) org.apache.axis.utils.JavaUtils
		    .convert(_resp, int.class)).intValue();
	}
    }
} catch (org.apache.axis.AxisFault axisFaultException) {
    throw axisFaultException;
}
}[/code]

Lembrar que no arquivo props/jbossws-users.properties o usuário e senha é setado da seguinte forma:

usuario=senha

dois

A edição dois da Mundo Java contém um artigo ref. a Web Service, porém o mesmo não trata de segurança, traz somente um exemplo básico de como criar um serviço.

mark_domi,

você conseguiu fazer o glassfish exigir o certificado digital?