... 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