public Principal getUserPrincipal() { // This could be an EJB endpoint; check the threadlocal variable Principal p = (Principal) principal.get(); if (p != null) { return p; } // This is a servlet endpoint p = this.jaxwsContextDelegate.getUserPrincipal(); // handling for WebService with WS-Security if (p == null && secServ != null) { WebServiceContractImpl wscImpl = WebServiceContractImpl.getInstance(); InvocationManager mgr = wscImpl.getInvocationManager(); boolean isWeb = ComponentInvocation.ComponentInvocationType.SERVLET_INVOCATION.equals( mgr.getCurrentInvocation().getInvocationType()) ? true : false; p = secServ.getUserPrincipal(isWeb); } return p; }
public boolean isUserInRole(String role) { WebServiceContractImpl wscImpl = WebServiceContractImpl.getInstance(); InvocationManager mgr = wscImpl.getInvocationManager(); if (ComponentInvocation.ComponentInvocationType.EJB_INVOCATION.equals( mgr.getCurrentInvocation().getInvocationType())) { EJBInvocation inv = (EJBInvocation) mgr.getCurrentInvocation(); boolean res = inv.isCallerInRole(role); return res; } // This is a servlet endpoint boolean ret = this.jaxwsContextDelegate.isUserInRole(role); // handling for webservice with WS-Security if (!ret && secServ != null) { if (mgr != null && mgr.getCurrentInvocation() != null) { if (mgr.getCurrentInvocation().getContainer() instanceof WebModule) { Principal p = getUserPrincipal(); ret = secServ.isUserInRole( (WebModule) mgr.getCurrentInvocation().getContainer(), p, servletName, role); } } } return ret; }
public void register() { invManager.registerComponentInvocationHandler(ComponentInvocationType.SERVLET_INVOCATION, this); }