... a dokładniej łączenie z WebService opartą na EJB przy pomocy loginu i hasła. Jeśli chcemy wykorzystać certyfikaty cała procedura będzie wyglądała całkiem podobnie.
1. Aplikacja: Nasza usługa powinna mieć annotacje @WebContext z authMethod="BASIC"
2. Aplikacja: META-INF/jboss.xml powinien zawierać definicję security domain, wykorzystane zostanie jaas
3. Serwer: conf/login-config.xml powinien zawierać definicję security domain. W tym wypadku jest to najprostsze z możliwych logowanie przy pomocy user.properties i roles.properties
w login-config
4. Serwer: w conf powinny znajdować się pliki user.properties i roles.properties, kolejno:
Voila! Tyle po stronie serwera. Po stronie aplikacji klienckiej musimy dodać credentiale przed połączeniem się z usługą sieciową. Zakładam, że klient usługi został wygenerowany przez wsimport (albo jakoś tak) JBossa. Robi się to tak:
1. Aplikacja: Nasza usługa powinna mieć annotacje @WebContext z authMethod="BASIC"
@WebService @Stateless @WebContext(contextRoot = "ws", authMethod = "BASIC") public class MyService implements IMyService { @Resource private SessionContext ctx; public void foo() { String userLogin = ctx.getCallerPrincipal().getName(); // dostep do loginu } }
2. Aplikacja: META-INF/jboss.xml powinien zawierać definicję security domain, wykorzystane zostanie jaas
java:/jaas/MySecurityDomain
3. Serwer: conf/login-config.xml powinien zawierać definicję security domain. W tym wypadku jest to najprostsze z możliwych logowanie przy pomocy user.properties i roles.properties
w login-config
4. Serwer: w conf powinny znajdować się pliki user.properties i roles.properties, kolejno:
username1=password1 username2=password2
username1=administrator username2=operator
Voila! Tyle po stronie serwera. Po stronie aplikacji klienckiej musimy dodać credentiale przed połączeniem się z usługą sieciową. Zakładam, że klient usługi został wygenerowany przez wsimport (albo jakoś tak) JBossa. Robi się to tak:
import javax.xml.ws.BindingProvider; //.... MyServiceService port = new MyServiceService(); IMyService myService = port.getMyServicePort(); Map requestContext = ((BindingProvider)myService).getRequestContext(); requestContext.put(BindingProvider.USERNAME_PROPERTY, "username1"); requestContext.put(BindingProvider.PASSWORD_PROPERTY, "password1"); myService.foo(); // autoryzowana metoda
Brak komentarzy:
Prześlij komentarz