public static void login(String user, String pass) { if (currentUser.get() != null) { logger.debug("Already authenticated with user {}", currentUser.get().getName()); return; CallbackHandler handler = new UserPassCallbackHandler(user, pass); final String domain = System.getProperty(KieServerConstants.KIE_SERVER_JAAS_DOMAIN, "kie-jms-login-context"); LoginContext lc = new LoginContext( domain, handler); Subject subject = lc.getSubject(); logger.debug("Login successfull and subject is {}", subject); UserDetails userDetails = new UserDetails(); userDetails.setName(user); List<String> roles = new ArrayList<String>(); if (subject != null) { roles.addAll(getRolesFromAdapter(subject)); userDetails.setRoles(roles); logger.debug("setting user details as {}", userDetails); currentUser.set(userDetails);
@Override public String getUser(Object ... params) { if (active) { try { Subject wlsSubject = getSubject(params); if ( wlsSubject != null ) { for ( java.security.Principal p : wlsSubject.getPrincipals() ) { if ( p.getClass().getName().indexOf( "WLSUser" ) != -1 ) { return p.getName(); } } } } catch (Exception e) { logger.debug("Unable to get user from subject due to {}", e.getMessage(), e); } } return null; }
@Override public String getUser(Object ... params) { if (active) { try { String principal = getPrincipalFromSubject(params); if (principal == null) { Method method = subject.getMethod("getCallerPrincipal", new Class[]{}); principal = (String) method.invoke(null, new Object[]{}); } return principal; } catch (Exception e) { logger.debug( "Unable to get user from subject due to {}", e.getMessage(), e ); } } return null; }
@Override public List<String> getRoles(Object ... params) { List<String> proles = new ArrayList<String>(); if (active) { if ( registry == null ) { return proles; } try { Method method = registry.getClass().getMethod( "getGroupsForUser", new Class[]{ String.class } ); List rolesIn = (List) method.invoke( registry, new Object[]{ getUser(params) } ); if ( rolesIn != null ) { for ( Object o : rolesIn ) { proles.add(o.toString()); } } } catch ( Exception e ) { logger.debug( "Unable to get groups from registry due to {}", e.getMessage(), e ); } } return proles; }
@Override public List<String> getRoles(Object ... params) { List<String> proles = new ArrayList<String>(); if (active) { HttpServletRequest request = CaptureHttpRequestFilter.getRequest(); if (request != null && request.getUserPrincipal() != null) { Principal principal = request.getUserPrincipal(); if (abstractUserClass.isAssignableFrom(principal.getClass())) { Iterator<?> it = (Iterator<?>) invoke(principal, "getRoles"); while (it.hasNext()) { Principal user = ((Principal) it.next()); proles.add(user.getName()); } } else if (genericPrincipalClass.isAssignableFrom(principal.getClass())) { String[] roles = (String[]) invoke(principal, "getRoles"); proles.addAll(Arrays.asList(roles)); } } } return proles; }
@Override public List<String> getRoles(Object ... params) { List<String> proles = new ArrayList<String>(); if (active) { try { Subject wlsSubject = getSubject(params); if ( wlsSubject != null ) { for ( java.security.Principal p : wlsSubject.getPrincipals() ) { if ( p.getClass().getName().indexOf( "WLSGroup" ) != -1 ) { proles.add(p.getName()); } } } } catch ( Exception e ) { logger.debug( "Unable to get groups from subject due to {}", e.getMessage(), e ); } } return proles; }