Invocar um web service .NET com um cliente java

33 views
Skip to first unread message

Manuel Leiria

unread,
Nov 5, 2009, 8:49:12 AM11/5/09
to ptjug...@googlegroups.com
ok pessoal, antes de mais agradeço qualquer ajuda que me possam dar. O cenário é este:
eu tenho uma aplicação na intranet (num servidor WebLogic) que precisa de aceder a um web service desenvolvido em .NET e protegido por kerberos. O ficheiro WSDL não tem especificações WS-Security visto a segurança estar implementada ao nível do web server.

A minha questão é saber como é que passo credenciais para o web server de forma a conseguir aceder ao web service. Eu consigo obter o TGT no KDC e consigo criar um byte[] com o service ticket para ir ao web service mas não sei o que fazer com este byte[] e nem sei se não há uma forma mais simples de fazer isto. Em C#, teriamos uma situação do género:

static void Main(string[] args) {

            wsprofileprod.Profiles proxy = new wsprofileprod.Profiles();

            proxy.Url = "http://profilingdes-ws:100/profiles.asmx";

            CredentialCache cache = new CredentialCache();

            cache.Add(new Uri(proxy.Url), // Web service URL

                          "Negotiate",  // Kerberos or NTLM

                          new NetworkCredential("usertest01", "password.123", "ritta"));

            proxy.Credentials = cache;

            Console.WriteLine(proxy.W3ApplicationListGetByUser("usertest01", "ritta").OuterXml.ToString());

            Console.ReadKey();

      }

que é de uma simpllicidade assustadora quando comparado com o que já vi em Java.
Não estou a usar o Axis2 mas sim a framework METRO (JAX-WS).
Se precisarem de mais informação (ficheiros de configuração, wsdl...) é só dizerem. Eu já li tanta coisa que fiquei com o cérbero completamente kerberizado :)

obrigado e abs,

Manuel Leiria


--
Manuel Leiria

Pedro Gomes

unread,
Nov 5, 2009, 10:06:38 AM11/5/09
to ptjug...@googlegroups.com
Boa tarde Manuel,

Podes utilizar java.net.Authenticator com o JAX-WS para conseguires a autenticação do cliente do WS (que é feita ao nível da ligação).

Sugiro dares uma vista de olhos em:
http://java.sun.com/javase/6/docs/technotes/guides/net/http-auth.html

Cumprimentos,
Pedro Gomes


2009/11/5 Manuel Leiria <manuel...@gmail.com>

Manuel Leiria

unread,
Nov 6, 2009, 9:18:14 AM11/6/09
to ptjug...@googlegroups.com
Eu já tinha visto essa class mas não estou a perceber como usá-la!

Eu tenho uma servlet com o seguinte método:

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse resopnse) throws Exception{

  LoginContext lc = new LoginContext("com.sun.security.jgss.initiate");
  lc.login();
  Subject subject = lc.getSubject();
  //Até aqui tudo bem. E agora?correr a class dentro do Subject.doAs(...)?


   return new ModelAndView(...);
}


Obrigado,
ML

2009/11/5 Pedro Gomes <p.mig...@gmail.com>



--
Manuel Leiria

Pedro Gomes

unread,
Nov 6, 2009, 9:41:14 AM11/6/09
to ptjug...@googlegroups.com
Boa tarde,

Eu utilizo o Authenticator com o JAX-WS de forma a lidar com o problema de autenticação da seguinte forma:

- a classe do POJO onde são invocados os WS extende o Authenticator:
public class MyClass extends Authenticator

- nesta classe é necessário implementar o método:
protected PasswordAuthentication getPasswordAuthentication()
    {
        return new PasswordAuthentication(userName,password.toCharArray());
    }

- antes de invocar os WS é também necessário:
Authenticator.setDefault(new MyClass());

- dependendo do tipo de mecanismo de autenticação pode ser necessário fazer set de algumas propriedades de sistema (por exemplo System.setProperty("http.auth.preference", "ntlm");)

- depois é só invocar os WS (em relação à autenticação não é necessário qualquer configuração do lado do cliente do WS)

Espero que isto ajude na utilização da classe.

Um abraço,
PG

2009/11/6 Manuel Leiria <manuel...@gmail.com>



--
Pedro Gomes

Manuel Leiria

unread,
Nov 6, 2009, 10:12:58 AM11/6/09
to ptjug...@googlegroups.com
sim mas a autenticação é SPNEGO, o que quer dizer que não tenho acesso às passwords.

2009/11/6 Pedro Gomes <p.mig...@gmail.com>



--
Manuel Leiria

Pedro Gomes

unread,
Nov 6, 2009, 10:26:46 AM11/6/09
to ptjug...@googlegroups.com
Realmente enviei exemplo para NTLM ou basic... nunca utilizei SPNEGO-Kerberos que faz uso do mecanismo dos tickets, mas julgo que podes utilizar na mesma o Authenticator (http://java.sun.com/javase/6/docs/technotes/guides/net/http-auth.html). Não tenho exemplos de utilização com este mecanismo.

Cumprimentos,
--
Pedro Gomes

Manuel Leiria

unread,
Nov 6, 2009, 10:37:31 AM11/6/09
to ptjug...@googlegroups.com
Nem imaginas, já li tudo o que havia para ler (inclusive o link em baixo) e não consigo entender como fazer isto. Dassssssssssssssssssssss.

De qualquer forma obrigado!!

1ab,
ML

2009/11/6 Pedro Gomes <p.mig...@gmail.com>



--
Manuel Leiria

Manuel Leiria

unread,
Nov 6, 2009, 10:47:45 AM11/6/09
to ptjug...@googlegroups.com
E com o Authenticator, segundo a documentação,

"Attention : According to the specification of java.net.Authenticator, it's designed to get the username and password at the same time, so do not specify principal=xxx in the JAAS config file"

só que o meu ficheiro de configuração está assim:

com.sun.security.jgss.initiate {
 com.sun.security.auth.module.
Krb5LoginModule required
 principal="suap...@RITTA.LOCAL" useKeyTab=true
 keyTab=suapps208.keytab storeKey=true debug=false; }
;

com.sun.security.jgss.accept {
 com.sun.security.auth.module.Krb5LoginModule required
 principal="suap...@RITTA.LOCAL" useKeyTab=true
 keyTab=suapps208.keytab storeKey=true debug=false; }

ou seja, o principal está lá referido!






2009/11/6 Pedro Gomes <p.mig...@gmail.com>



--
Manuel Leiria

António Mota

unread,
Nov 9, 2009, 1:21:43 PM11/9/09
to ptjug...@googlegroups.com
Authenticator? Acho q tb vi esse filme... Autenticador Implacável em
portugues, nao era?


_______________________________________________

Melhores cumprimentos / Beir beannacht / Best regards

António Manuel dos Santos Mota

mobile: +353(0)877718363
mailto: ams...@gmail.com
mailto: antoni...@meridianglobalservices.com
skype: amsmota
msn: antoni...@hotmail.com
profile: http://www.linkedin.com/in/amsmota
cv: http://docs.google.com/View?id=ddghngm7_24fdw5hmc7
_______________________________________________



2009/11/6 Manuel Leiria <manuel...@gmail.com>:

Manuel Leiria

unread,
Nov 11, 2009, 8:23:59 AM11/11/09
to ptjug...@googlegroups.com
Estás a fazer confusão. Esse era o Penetrator. Em português, o Penetrador Implacável - ele veio à terra para penetrar... ;-)

2009/11/9 António Mota <ams...@gmail.com>



--
Manuel Leiria
Reply all
Reply to author
Forward
0 new messages