public Credential validate(Credential credential, RequestData data) throws WSSecurityException { Credential cred = super.validate(credential, data); UsernameToken ut = credential.getUsernametoken(); WSUsernameTokenPrincipalImpl principal = new WSUsernameTokenPrincipalImpl(ut.getName(), ut.isHashed()); principal.setCreatedTime(ut.getCreated()); principal.setNonce(principal.getNonce()); principal.setPassword(ut.getPassword()); principal.setPasswordType(ut.getPasswordType()); Subject subject = new Subject(); subject.getPrincipals().add(principal); if ("Alice".equals(ut.getName())) { subject.getPrincipals().add(new SimpleGroup("manager", ut.getName())); } subject.getPrincipals().add(new SimpleGroup("worker", ut.getName())); cred.setSubject(subject); return cred; } }
@Override public UserSubject createSubject(Client client, String user, String pass) { Document doc = DOMUtils.getEmptyDocument(); UsernameToken token = new UsernameToken(false, doc, WSS4JConstants.PASSWORD_TEXT); token.setName(user); token.setPassword(pass); Credential credential = new Credential(); credential.setUsernametoken(token); RequestData data = new RequestData(); data.setMsgContext(PhaseInterceptorChain.getCurrentMessage()); data.setCallbackHandler(callbackHandler); UsernameTokenValidator validator = new UsernameTokenValidator(); try { credential = validator.validate(credential, data); UserSubject subject = new UserSubject(); subject.setLogin(user); return subject; } catch (Exception ex) { throw ExceptionUtils.toInternalServerErrorException(ex, null); } }