Web Service com Autenticação user name

Ola pessoal,
Tenho um web service implementado e esta funcionando com um cliente em Java e outro em VB.
Mas agora preciso colocar uma forma de autenticação para o uso deste serviço.
Já li (e muito) sobre o assunto (WS-Security) mas não consegui fazer o troço funcionar.
Meu ambiente é o seguinte: Eclipse + Servidor JBoss + Maven + serviço implementado com as annotations do javax.jws.
Pra ilustrar melhor vai o código da interface:

import javax.jws.WebMethod;
import javax.jws.WebService;

/**
 * @author Avila
 *
 */
@WebService(targetNamespace="http://localhost:9090/teste", name="PessoaWS")
public interface PessoaWS {

	@WebMethod
	public CorPessoaModel consultarPessoa(String pCNPJ);
	
	@WebMethod
	public AtvPessoaBalanco consultarPessoaBalanco(String pCNPJ);
}

Eu realmente não sei por onde ir pra adicionar essa questão de autenticação…
Já tentei fazer de várias formas… Já pesquisei muito no google, já li muitos tutoriais (a maioria usando Axis, que meu chefe disse pra não usar =p).

Agradeço desde já!

olá amigo, esse seu web service é servlet container (roda no tomcat, jetty) ou é EJB Component?
Se for servlet container vc pode usar o spring security, HTTP Basic Autentication, web.xml com <security-constraint><web-resource-collection><etc…></etc…><web-recource-collection></security-constraint> etc…

Mas se for EJB component vc pode usar o @DeclaredRolles(Suas roles aqui)…onde no método vc especifica as @RollesAllowed(Suas roles especificadas em DeclaredRollesRoles…)

Pesquise o pdf O’Reilly Java Web Services Up and Running… Tem um capitulo sobre segurança.

Espero ter ajudado
Abraço

JBoss e segurança:

https://docs.jboss.org/author/display/JBWS/WS-Security
e
http://www.developer.com/java/other/article.php/3802631/Securing-Web-Services-in-JBoss-Application-Server-with-WS-Security.htm

Duplicando post e forums diferentes não fará que você tenha sua resposta de forma mais rápida :wink: ( http://www.guj.com.br/java/282577-web-service-com-autenticacao-user-name )

[]'s

Desde já agradeço as respostas!

[quote=paulo1911]olá amigo, esse seu web service é servlet container (roda no tomcat, jetty) ou é EJB Component?
Se for servlet container vc pode usar o spring security, HTTP Basic Autentication, web.xml com <security-constraint><web-resource-collection><etc…></etc…><web-recource-collection></security-constraint> etc…

Mas se for EJB component vc pode usar o @DeclaredRolles(Suas roles aqui)…onde no método vc especifica as @RollesAllowed(Suas roles especificadas em DeclaredRollesRoles…)

Pesquise o pdf O’Reilly Java Web Services Up and Running… Tem um capitulo sobre segurança.

Espero ter ajudado
Abraço[/quote]

Paulo, meu web service é servlet container. Eu esqueci de dizer que a versão que to usando do JBoss é a 7.1.1.
Aqui na empresa não estamos usando o spring, e não acho válido adicionar o spring “apenas” para isso… (Ou não… pelo tempo que já to travado nisso pode ser uma possibilidade). Vou procurar pelo PDF que você falou ainda.

[quote=WRYEL]JBoss e segurança:

https://docs.jboss.org/author/display/JBWS/WS-Security
e
http://www.developer.com/java/other/article.php/3802631/Securing-Web-Services-in-JBoss-Application-Server-with-WS-Security.htm

Duplicando post e forums diferentes não fará que você tenha sua resposta de forma mais rápida :wink: ( http://www.guj.com.br/java/282577-web-service-com-autenticacao-user-name )

[]'s
[/quote]

WRYEL, Eu já tinha visto o primeiro link do jboss. Não ajudou muito. Mas o segundo me deu uma luz! Consegui seguí-lo até certo ponto, fazendo as devidas adaptações por questões de versão. Por exemplo a configuração do WS-Security no JBoss As 7.1 parece ser feita no standalone.xml:

<subsystem xmlns="urn:jboss:domain:webservices:1.1">
	<modify-wsdl-address>true</modify-wsdl-address>
	<wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
	<endpoint-config name="Standard-Endpoint-Config">
		<post-handler-chain name="wssecurity-handler" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
			<handler name="WSSecurityHandler" class="org.jboss.ws.extensions.security.jaxws.WSSecurityHandlerServer"/>
		</post-handler-chain>
	</endpoint-config>
	<endpoint-config name="Recording-Endpoint-Config">
		<pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
			<handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
		</pre-handler-chain>
	</endpoint-config>
</subsystem>

Mas ai esbarrei na classe handler que o link usa. Na biblioteca dos modulos do JBoss AS 7.1.1 não achei essa classe… Dando erro de ClassNotFound.
Se você souber da classe correspondente para o AS 7.1.1, ou um link supimpa como o anterior só que pra AS 7 eu ficaria eternamente grato! :smiley:

Ainda estou tentando seguir o modelo do www.developer.com … Qualquer coisa nova eu deixo aqui uma resposta.

Abraços! o/

[quote=WRYEL]JBoss e segurança:

Duplicando post e forums diferentes não fará que você tenha sua resposta de forma mais rápida :wink: ( http://www.guj.com.br/java/282577-web-service-com-autenticacao-user-name )

[]'s
[/quote]

Ah cara, foi mal. Não foi intencional, e nem foi em foruns diferentes… Acho que deu erro uma vez, e quando tentei re-postar foram dois e nem vi. Desculpa ae amigo!

Abraço!